Esiste un modo per analizzare una stringa delimitata da una singola virgola senza utilizzare nulla di simile a csv.reader (..)? Posso usare la funzione split(',')
ma ciò non funziona quando un valore di colonna valido contiene una virgola stessa. La libreria csv ha lettori per l'analisi di file CSV che gestiscono correttamente il caso speciale sopra menzionato, ma non posso usarli perché ho bisogno di analizzare solo una singola stringa. Tuttavia se il CSV di Python consente di analizzare una singola stringa stessa, allora questa è una novità per me.Analizza una singola stringa CSV?
5
A
risposta
11
Date un'occhiata più da vicino la documentazione del modulo csv
, che dice:
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.
Quindi, se si avere una stringa:
>>> s = '"this is", "a test", "of the csv", "parser"'
E si desidera "un oggetto che restituisce una linea di Ingresso per ogni iterazione", si può semplicemente avvolgere la stringa in un elenco:
>>> r = csv.reader([s])
>>> list(r)
[['this is', 'a test', 'of the csv parser']]
Ed è così che si analizza una stringa con il modulo csv
.
9
È ancora possibile analizzare una singola stringa con csv
. Utilizzare StringIO di scrivere una stringa buffer (noto anche come file di memoria):
import csv
from StringIO import StringIO
s = "your string"
buff = StringIO(s)
reader = csv.reader(buff)
for line in reader:
print(line)
+0
Per Python 3 usare 'da io import StringIO' vedere [qui] (https://docs.python.org/3/library/io.html#text-io) –
Problemi correlati
- 1. Analizza una tupla da una stringa?
- 2. analizza una stringa xml in java?
- 3. Analizza una stringa XML in Python
- 4. Conversione di argv su una singola stringa
- 5. Analizza stringa nella mappa Golang
- 6. Convertire un array numpy in una stringa CSV e una stringa CSV in un array numpy
- 7. MySQL importa solo una singola riga da CSV
- 8. Scrittura di un elenco Python in una singola colonna CSV
- 9. Come leggere una singola riga di dati csv in Python?
- 10. Asynctask Android che passa una singola stringa
- 11. analizza una stringa a "anno-mese-giorno" formato in C#
- 12. Javascript: analizza una stringa in data come fuso orario LOCAL
- 13. Funzione aggregazione di Linq, Come creare una stringa CSV
- 14. ActiveRecord analizza la stringa in data/ora?
- 15. python stringa '"': singola virgoletta all'interno della stringa
- 16. PL/SQL, come evitare una virgoletta singola in una stringa?
- 17. Estrarre una stringa singola da una serie di elementi
- 18. Convertire una lista di stringhe ad una singola stringa
- 19. Come rimuovere una virgoletta singola da una stringa in R?
- 20. Posso usare una virgoletta singola in una "stringa" di PowerShell?
- 21. Come sfuggire a una singola virgoletta in una stringa a virgoletta singola in Bash?
- 22. Elenco generico per stringa CSV
- 23. Convertire Pandas dataframe stringa csv
- 24. Sostituzione di una strana virgoletta singola (') con una stringa vuota in Python
- 25. Unisci file di output CSV con intestazione singola
- 26. Import-Csv da una stringa anziché da un file?
- 27. Conversione di un elenco generico in una stringa CSV
- 28. Sostituzione di una singola occorrenza di stringa Obj-c
- 29. Impossibile assegnare una stringa con virgoletta singola in golang
- 30. Come si legge una singola stringa dall'input standard?
Immagino che sarebbe più elegante da usare 'iter (s)' come a un iteratore generale invece di '[s]' (specificando una lista). Ma tu hai il mio +1 – RafaelC
Questo probabilmente non funzionerà se la stringa ha quotato linefeed all'interno dei valori; @ la risposta di alecxe ha più senso – swooby