Кто-либо знает о простой библиотеке или функционирует, чтобы проанализировать csv закодированная строка и превратить ее в массив или словарь?
Я не думаю, что хочу созданный в csv модуле, потому что во всех примерах я видел, что берет filepaths, не строки.
Вы можете преобразовать строку в объект файла, используя 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
.
Как уже отмечали другие, 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
Просто - модуль 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']]