2011-10-07 15 views
8

Powiel możliwe:
How to read a CSV line with "?Jak podzielić linię przecinkami, ale ignorują przecinki w cudzysłowie Pythonie

Widziałem wiele pokrewnych pytań, ale żaden z nich nie jest bezpośrednio skierowana co Próbuję to zrobić. Czytam w wierszach tekstu z pliku CSV.

Wszystkie pozycje są w cudzysłowach, a niektóre mają dodatkowe przecinki w cudzysłowie. Chciałbym podzielić linię przecinkami, ale zignoruj ​​przecinki w cudzysłowach. Czy istnieje sposób, aby to zrobić w Pythonie, który nie wymaga liczby wyrażeń regularnych.

Przykładem jest:

"114111","Planes,Trains,and Automobiles","50","BOOK" 

które chciałbym analizowany w 4 oddzielnych zmiennych wartości:

"114111" "Planes,Trains,and Automobiles" "50" "Book" 

Czy istnieje proste rozwiązanie w line.split() że jestem brakujące?

+8

użyć modułu csv – JBernardo

+0

@GregHewgill (i trzy inne): Naprawdę nie jest duplikatem. Inne pytanie jest bardziej szczegółowo związane z implementacją, niż z biblioteką. – Johnsyweb

+1

"Czytam w wierszach tekstu z pliku CSV." W takim razie twoje pytanie brzmi: "Jak parsować plik CSV?" Zadaj pytanie, na które naprawdę chcesz odpowiedzieć. Często oszczędza zarówno Tobie, jak i potencjalnym odbiorcom dużo czasu. –

Odpowiedz

30

Nie próbuj ponownie wymyślać koła.

Aby odczytać wiersze z pliku CSV, należy użyć biblioteki standardowej w języku Python:

Przykład:

> cat test.py 
import csv 
with open('some.csv') as f: 
    reader = csv.reader(f) 
    for row in reader: 
     print(row) 
> cat some.csv 
"114111","Planes,Trains,and Automobiles","50","BOOK" 

> python test.py 
['114111', 'Planes,Trains,and Automobiles', '50', 'BOOK'] 
[] 

Job done!

+1

Dzięki !, które dały mi potrzebne informacje. :) – chrisfs

+0

@chrisfs: chętnie pomożemy. – Johnsyweb

-5

Prawdopodobnie można podzielić na „”, który jest «[quote] [przecinek] [quote]»

druga opcja jest wymyślanie charakter ucieczki, więc jeśli ktoś chce umieścić przecinek w łańcuch znaków \ ​​c i jeśli chcą odwrotnego ukośnika \\. Następnie musisz podzielić ciąg znaków, a następnie rozwinąć go przed przetworzeniem.

Powiązane problemy