Możesz przekonwertować ciąg znaków na obiekt pliku za pomocą, io.StringIO
a następnie przekazać go do csv
modułu:
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))
prostsza wersja z split()
nowymi liniami:
reader = csv.reader(scsv.split('\n'), delimiter=',')
for row in reader:
print('\t'.join(row))
Lub możesz po prostu split()
umieścić ten ciąg w wierszach, używając \n
jako separatora, a następnie split()
każdy wiersz w wartości, ale w ten sposób musisz być świadomy cudzysłowów, więc csv
preferowane jest użycie module.
W Pythonie 2 musisz importować StringIO
jako
from StringIO import StringIO
zamiast.
.split('\n')
możesz użyć.splitlines()
.Proste - moduł csv działa również z listami:
źródło
.split('\n')
będzie to robić dziwne rzeczy, jeśli twoje pola zawierają znaki nowej linii.Bardzo pomocny jest oficjalny dokument dotyczący
csv.reader()
https://docs.python.org/2/library/csv.html , który mówiźródło
Aby przeanalizować plik CSV:
źródło
3, "4,5,6, 6
Będzie traktowane jako trzy pola zamiast pięciu.Jak inni już zauważyli, Python zawiera moduł do odczytu i zapisu plików CSV. Działa całkiem dobrze, o ile znaki wejściowe mieszczą się w granicach ASCII. Jeśli chcesz przetworzyć inne kodowania, potrzeba więcej pracy.
Dokumentacja Pythona dotycząca modułu csv implementuje rozszerzenie csv.reader, które używa tego samego interfejsu, ale może obsługiwać inne kodowania i zwraca ciągi znaków Unicode. Wystarczy skopiować i wkleić kod z dokumentacji. Następnie możesz przetworzyć plik CSV w następujący sposób:
źródło
'utf-8-sig'
jako kodeka zamiast'utf-8'
.Zgodnie z dokumentacją:
Po prostu zamień swój ciąg w listę pojedynczego elementu.
Importowanie StringIO wydaje mi się nieco przesadne, gdy ten przykład jest jawnie w dokumentacji.
źródło
https://docs.python.org/2/library/csv.html?highlight=csv#csv.reader
Tak więc generator
StringIO.StringIO()
,str.splitlines()
a nawet generator, są dobre.źródło
Oto alternatywne rozwiązanie:
Oto dokumentacja
źródło
Użyj tego, aby załadować plik csv do listy
źródło
Panda to dość potężna i sprytna biblioteka odczytująca CSV w Pythonie
Prosty przykład, mam plik example.zip z czterema plikami.
Gdy masz już dane, możesz manipulować nimi, aby grać z listą lub innymi formatami.
źródło