Czy istnieje sposób, że można parsować pojedynczy ciąg rozdzielany przecinkami bez użycia niczego wymyślnego jak csv.reader (..)? Mogę użyć funkcji split(',')
, ale to nie działa, gdy poprawna wartość kolumny zawiera sam przecinek. Biblioteka csv ma czytniki do parsowania plików CSV, które poprawnie obsługują wyżej wymieniony specjalny przypadek, ale nie mogę ich użyć, ponieważ muszę przeanalizować tylko jeden ciąg znaków. Jednak jeśli Python CSV pozwala na parsowanie samego ciągu znaków, to jest to dla mnie nowość.Parsować pojedynczy ciąg CSV?
5
A
Odpowiedz
11
Przyjrzyj w dokumentacji modułu csv
, który mówi:
reader(...)
csv_reader = reader(iterable [, dialect='excel']
[optional keyword args])
for row in csv_reader:
process(row)
The "iterable" argument can be any object that returns a line
of input for each iteration, such as a file object or a list. The
optional "dialect" parameter is discussed below. The function
also accepts optional keyword arguments which override settings
provided by the dialect.
więc jeśli mieć ciąg:
>>> s = '"this is", "a test", "of the csv", "parser"'
I chcesz "obiekt, który zwraca linię Wejście dla każdego iteracji”, można po prostu owinąć swój ciąg w formie listy:
>>> r = csv.reader([s])
>>> list(r)
[['this is', 'a test', 'of the csv parser']]
A to, w jaki sposób analizowania ciąg z modułem csv
.
9
Nadal można przeanalizować pojedynczy ciąg znaków za pomocą csv
. Użyj StringIO napisać ciąg buffer (znany również jako plików pamięci):
import csv
from StringIO import StringIO
s = "your string"
buff = StringIO(s)
reader = csv.reader(buff)
for line in reader:
print(line)
+0
Dla Pythona 3 użyj 'from io import StringIO' zobacz [tutaj] (https://docs.python.org/3/library/io.html#text-io) –
Powiązane problemy
- 1. Python csv.DictReader: parsować ciąg?
- 2. Python - jak odczytać/parsować CSV jak linię?
- 3. Parsować ciąg bson w python?
- 4. parsować ciąg do wektora int
- 5. python parsować http odpowiedź (ciąg)
- 6. Python ciąg "" ": pojedynczy podwójny cudzysłów wewnątrz ciąg
- 7. Asynctask Androida przekazujący pojedynczy ciąg
- 8. Python xlrd parsować Excel xlsx do csv z konwersją daty
- 9. Parsować plik CSV zawierający znak Unicode, korzystając z OpenCSV
- 10. Jak odczytać pojedynczy ciąg ze standardowego wejścia?
- 11. Importuj plik tekstowy jako pojedynczy ciąg znaków
- 12. Jak parsować JSON (AS3)
- 13. Konwertuj tablicę numpy na ciąg CSV i ciąg znaków CSV z powrotem na tablicę numpy
- 14. Parsować ciąg znaków do wartości wyliczeniowej w VB.NET
- 15. parsować ciąg liczb całkowitych z przedziałami do listy
- 16. Konwersja pandy dataframe do csv ciąg
- 17. Parsować krotkę z ciągu znaków?
- 18. PHP przekonwertować podwójny cudzysłów na pojedynczy cytowany ciąg
- 19. jest próbowanie parsować .css
- 20. parsować NSURL mailto
- 21. Android parsować JSONObject
- 22. Jak czytać plik CSV po jednej linii naraz i parsować słowa kluczowe
- 23. Jak parsować tabelę html z python i beautifulsoup i pisać do csv
- 24. Parsować plik CSV z polami nagłówka jako atrybutami dla każdego wiersza.
- 25. Wielowątkowy pojedynczy czytnik pojedynczy pisarz kolejka fifo
- 26. XStream parsować JSON bez węzła głównego
- 27. Jak parsować zniekształcony HTML w pytonie
- 28. Przetwarzanie CSV
- 29. Zachowanie czytnika csv z Brak i pusty ciąg
- 30. Jak mogę sprawdzić, czy ciąg kończy się „.csv” w C
Myślę, że byłoby bardziej elegancko używać 'iter (s)' zamiast ogólnego iteratora zamiast '[s]' (określając listę). Ale masz mój +1 – RafaelC
To prawdopodobnie nie zadziała, jeśli ciąg ma cytowane linie w obrębie wartości; Odpowiedź @ alecxe ma więcej sensu – swooby