Python csv представляет в виде строки для выстраивания

Кто-либо знает о простой библиотеке или функционирует, чтобы проанализировать csv закодированная строка и превратить ее в массив или словарь?

Я не думаю, что хочу созданный в csv модуле, потому что во всех примерах я видел, что берет filepaths, не строки.

165
задан thefourtheye 20 November 2015 в 07:20
поделиться

3 ответа

Вы можете преобразовать строку в объект файла, используя io.StringIO , а затем передать это в модуль csv :

from io import StringIO
import csv

scsv = """text,with,Polish,non-Latin,letters
1,2,3,4,5,6
a,b,c,d,e,f
gęś,zółty,wąż,idzie,wąską,dróżką,
"""

f = StringIO(scsv)
reader = csv.reader(f, delimiter=',')
for row in reader:
    print('\t'.join(row))

более простая версия с split () на новых строках:

reader = csv.reader(scsv.split('\n'), delimiter=',')
for row in reader:
    print('\t'.join(row))

Или вы можете просто split () эту строку на строки, используя \ n в качестве разделителя, а затем split () каждую строку в значения, но в этом случае вы должны знать о цитировании, поэтому использование модуля csv является предпочтительным.

В Python 2 вам нужно вместо этого импортировать StringIO как

from StringIO import StringIO

.

227
ответ дан 23 November 2019 в 21:07
поделиться

Как уже отмечали другие, Python включает модуль для чтения и записи файлов CSV. Он работает очень хорошо, пока вводимые символы остаются в пределах ASCII. Если вы хотите обработать другие кодировки, потребуется дополнительная работа.

Документация Python для модуля csv реализует расширение csv.reader, которое использует тот же интерфейс, но может обрабатывать другие кодировки и возвращать строки Unicode. Просто скопируйте и вставьте код из документации. После этого вы можете обработать CSV-файл следующим образом:

with open("some.csv", "rb") as csvFile: 
    for row in UnicodeReader(csvFile, encoding="iso-8859-15"):
        print row
8
ответ дан 23 November 2019 в 21:07
поделиться

Просто - модуль csv работает и со списками:

>>> a=["1,2,3","4,5,6"]  # or a = "1,2,3\n4,5,6".split('\n')
>>> import csv
>>> x = csv.reader(a)
>>> list(x)
[['1', '2', '3'], ['4', '5', '6']]
67
ответ дан 23 November 2019 в 21:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: