Чтение *.csv файла.

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
11 messages Options
Reply | Threaded
Open this post in threaded view
|

Чтение *.csv файла.

Andrey Ostapenko
Я новенек в SmallTalk'е. Вот пытаюсь понять, как работать с файлами чтение/запись.
Есть с  *.csv файл с содержимым:

200;100
300;500


Как его прочитать, распарсить  и добавить в коллекцию (список). Т.е. должен получиться список массивов чисел, по два числа на строку.

--
http://groups.google.ru/group/sugr
Reply | Threaded
Open this post in threaded view
|

Re: Чтение *.csv файла.

Dennis Schetinin
Очень желательно указывать хотя бы каким именно Smalltalk-ом вы пользуетесь.

Если речь о Pharo/Squeak, то вот здесь есть парсерочек:


Я примерно год назад пользовался его 6-ой версией. Сейчас не помню подробностей, но в той или предыдущей версии приходилось что-то патчить, что-то несложное. Но там сейчас уже 4 обновления добавилось, возможно уже и не надо будет допиливать.


Best regards,
Dennis Schetinin

On Wednesday, 26 September 2012 г. at 17:04, Andrey Ostapenko wrote:

Я новенек в SmallTalk'е. Вот пытаюсь понять, как работать с файлами чтение/запись.
Есть с  *.csv файл с содержимым:

200;100
300;500


Как его прочитать, распарсить  и добавить в коллекцию (список). Т.е. должен получиться список массивов чисел, по два числа на строку.

--
http://groups.google.ru/group/sugr

--
http://groups.google.ru/group/sugr
Reply | Threaded
Open this post in threaded view
|

Re: Чтение *.csv файла.

kirand
In reply to this post by Andrey Ostapenko
Пользоваться Stream. Почитай описание в IDE. Если знаешь java, то это похоже на Iterator.
Вообщем, итерируешь по файлу, и складываешь в переменную, доходишь до точки с запятой, добавляешь переменную в массив. Дошел до конца строки - добавляешь массив к другому массиву. Дошел до конца файла - больше не итерируешь.
В итоге у тебя получится массив массивов, представляющих собой строки и содержащих числа из строки.
Как-то так.

среда, 26 сентября 2012 г., 16:04:58 UTC+3 пользователь Andrey Ostapenko написал:
Я новенек в SmallTalk'е. Вот пытаюсь понять, как работать с файлами чтение/запись.
Есть с  *.csv файл с содержимым:

200;100
300;500


Как его прочитать, распарсить  и добавить в коллекцию (список). Т.е. должен получиться список массивов чисел, по два числа на строку.

--
http://groups.google.ru/group/sugr
Reply | Threaded
Open this post in threaded view
|

Re: Чтение *.csv файла.

Dennis Schetinin
In reply to this post by Dennis Schetinin
Я невнимательно прочитал исходное сообщение, переусложнил задачу. Проще написать в данном случае написать самому. :)


Best regards,
Dennis Schetinin
Sent with Sparrow

On Wednesday, 26 September 2012 г. at 17:16, Dennis Schetinin wrote:

Очень желательно указывать хотя бы каким именно Smalltalk-ом вы пользуетесь.

Если речь о Pharo/Squeak, то вот здесь есть парсерочек:


Я примерно год назад пользовался его 6-ой версией. Сейчас не помню подробностей, но в той или предыдущей версии приходилось что-то патчить, что-то несложное. Но там сейчас уже 4 обновления добавилось, возможно уже и не надо будет допиливать.


Best regards,
Dennis Schetinin

On Wednesday, 26 September 2012 г. at 17:04, Andrey Ostapenko wrote:

Я новенек в SmallTalk'е. Вот пытаюсь понять, как работать с файлами чтение/запись.
Есть с  *.csv файл с содержимым:

200;100
300;500


Как его прочитать, распарсить  и добавить в коллекцию (список). Т.е. должен получиться список массивов чисел, по два числа на строку.

--
http://groups.google.ru/group/sugr


--
http://groups.google.ru/group/sugr
Reply | Threaded
Open this post in threaded view
|

Re: Чтение *.csv файла.

vmusulainen-2
In reply to this post by Andrey Ostapenko
CONTENTS DELETED
The author has deleted this message.
Reply | Threaded
Open this post in threaded view
|

Re: Чтение *.csv файла.

vmusulainen-2
In reply to this post by Andrey Ostapenko
CONTENTS DELETED
The author has deleted this message.
Reply | Threaded
Open this post in threaded view
|

Re: Чтение *.csv файла.

Andrey Ostapenko
Спасибо все кто откликнулся. Разобраться помог вот этот блог. 
А как сделать условие на проверку наличия файла по указанному пути? Т.е. если файл, то причитать его и сделать то то и то-то, а если нет файла, то ничего и не вываливаться в ошибку.

среда, 26 сентября 2012 г., 18:03:43 UTC+4 пользователь Владимир Мусулайнен написал:
И да, если захочется самому распарсить файл и будет не понятно как, то скажите об этом - можно и код набросать.

среда, 26 сентября 2012 г., 17:04:58 UTC+4 пользователь Andrey Ostapenko написал:
Я новенек в SmallTalk'е. Вот пытаюсь понять, как работать с файлами чтение/запись.
Есть с  *.csv файл с содержимым:

200;100
300;500


Как его прочитать, распарсить  и добавить в коллекцию (список). Т.е. должен получиться список массивов чисел, по два числа на строку.

--
http://groups.google.ru/group/sugr
Reply | Threaded
Open this post in threaded view
|

Re: Чтение *.csv файла.

Andrey Ostapenko
Использую Pharo/Squeak

среда, 26 сентября 2012 г., 21:29:49 UTC+4 пользователь Andrey Ostapenko написал:
Спасибо все кто откликнулся. Разобраться помог вот этот блог. 
А как сделать условие на проверку наличия файла по указанному пути? Т.е. если файл, то причитать его и сделать то то и то-то, а если нет файла, то ничего и не вываливаться в ошибку.

среда, 26 сентября 2012 г., 18:03:43 UTC+4 пользователь Владимир Мусулайнен написал:
И да, если захочется самому распарсить файл и будет не понятно как, то скажите об этом - можно и код набросать.

среда, 26 сентября 2012 г., 17:04:58 UTC+4 пользователь Andrey Ostapenko написал:
Я новенек в SmallTalk'е. Вот пытаюсь понять, как работать с файлами чтение/запись.
Есть с  *.csv файл с содержимым:

200;100
300;500


Как его прочитать, распарсить  и добавить в коллекцию (список). Т.е. должен получиться список массивов чисел, по два числа на строку.

--
http://groups.google.ru/group/sugr
Reply | Threaded
Open this post in threaded view
|

Re: Чтение *.csv файла.

Nikolay Kleptsov
Открытие файла выполнить в блоке:
[file open.] on: Error do: [:ex| <обработка ошибки>].
Полезно посмотреть категорию Files-Kernel. В ней собраны как классы файлов, так и исключения, которые можно использовать вместо Error.

26 сентября 2012 г., 23:31 пользователь Andrey Ostapenko <[hidden email]> написал:
Использую Pharo/Squeak

среда, 26 сентября 2012 г., 21:29:49 UTC+4 пользователь Andrey Ostapenko написал:
Спасибо все кто откликнулся. Разобраться помог вот этот блог. 
А как сделать условие на проверку наличия файла по указанному пути? Т.е. если файл, то причитать его и сделать то то и то-то, а если нет файла, то ничего и не вываливаться в ошибку.

среда, 26 сентября 2012 г., 18:03:43 UTC+4 пользователь Владимир Мусулайнен написал:
И да, если захочется самому распарсить файл и будет не понятно как, то скажите об этом - можно и код набросать.

среда, 26 сентября 2012 г., 17:04:58 UTC+4 пользователь Andrey Ostapenko написал:
Я новенек в SmallTalk'е. Вот пытаюсь понять, как работать с файлами чтение/запись.
Есть с  *.csv файл с содержимым:

200;100
300;500


Как его прочитать, распарсить  и добавить в коллекцию (список). Т.е. должен получиться список массивов чисел, по два числа на строку.

--
http://groups.google.ru/group/sugr

--
http://groups.google.ru/group/sugr
Reply | Threaded
Open this post in threaded view
|

Re[2]: [RSUG] Re: Чтение *.csv файла.

vmusulainen-2
In reply to this post by Andrey Ostapenko
CONTENTS DELETED
The author has deleted this message.
Reply | Threaded
Open this post in threaded view
|

Re: Чтение *.csv файла.

Andrey Ostapenko
In reply to this post by Andrey Ostapenko
 Вот так сделала, вроде работает.
  
    file := FSLocator vmDirectory / 'test.csv'.
   
    file exists ifFalse: [^self].
   
    (((FileStream readOnlyFileNamed: file)
     contentsOfEntireFile " read and close "
     findTokens: String crlf) " split into lines "
     reject: [:e | e isEmpty]) " lose empty lines "
     collect: [:e | e findTokens: $;] " split into fields ".

среда, 26 сентября 2012 г., 17:04:58 UTC+4 пользователь Andrey Ostapenko написал:
Я новенек в SmallTalk'е. Вот пытаюсь понять, как работать с файлами чтение/запись.
Есть с  *.csv файл с содержимым:

200;100
300;500


Как его прочитать, распарсить  и добавить в коллекцию (список). Т.е. должен получиться список массивов чисел, по два числа на строку.

--
http://groups.google.ru/group/sugr