Вы можете преобразовать строку в объект файла, используя, 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
вместо.
.split('\n')
, вы можете использовать.splitlines()
.Все просто - модуль csv также работает со списками:
источник
.split('\n')
будут происходить странные вещи, если ваши поля содержат переводы строк.Официальный документ для
csv.reader()
https://docs.python.org/2/library/csv.html очень полезен.источник
Для анализа файла CSV:
источник
3, "4,5,6, 6
должно рассматриваться как три поля вместо пяти.Как уже отмечали другие, Python включает в себя модуль для чтения и записи файлов CSV. Это работает довольно хорошо, пока вводимые символы остаются в пределах ASCII. Если вы хотите обрабатывать другие кодировки, требуется больше работы.
Документация Python для модуля csv реализует расширение csv.reader, которое использует тот же интерфейс, но может обрабатывать другие кодировки и возвращает строки Unicode. Просто скопируйте и вставьте код из документации. После этого вы можете обработать CSV-файл следующим образом:
источник
'utf-8-sig'
вместо кодека'utf-8'
.Согласно документации:
Просто включите вашу строку в один список элементов.
Импорт StringIO кажется мне немного излишним, когда этот пример явно указан в документации.
источник
https://docs.python.org/2/library/csv.html?highlight=csv#csv.reader
Таким образом,
StringIO.StringIO()
,str.splitlines()
или даже генератор все хорошо.источник
Вот альтернативное решение:
Вот документация
источник
Используйте это, чтобы загрузить CSV в список
источник
Panda - довольно мощная и умная библиотека для чтения CSV на Python
Простой пример здесь, у меня есть файл example.zip с четырьмя файлами в нем.
Когда у вас есть данные, вы можете манипулировать ими со списком или другими форматами.
источник