Csv.reader(..)のような派手なものを使用せずに、単一のコンマ区切り文字列を解析できる方法はありますか? split(',')
関数を使用できますが、有効な列の値にコンマ自体が含まれている場合は機能しません。 csvライブラリには、前述の特殊なケースを正しく処理するCSVファイルを解析するためのリーダーがありますが、1つの文字列だけを解析する必要があるため、これらを使用できません。ただし、Python CSVが単一の文字列自体の解析を許可する場合、それは私にとってニュースです。
csv
モジュールのドキュメントを詳しく見てください。
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.
したがって、文字列がある場合:
>>> s = '"this is", "a test", "of the csv", "parser"'
「繰り返しごとに入力の行を返すオブジェクト」が必要な場合は、文字列をリストにラップするだけです。
>>> r = csv.reader([s])
>>> list(r)
[['this is', 'a test', 'of the csv parser']]
そして、それがcsv
モジュールで文字列を解析する方法です。
csv
を使用して単一の文字列を解析できます。 StringIOを使用して文字列を書き込む buffer (メモリファイルとも呼ばれます):
import csv
from StringIO import StringIO
s = "your string"
buff = StringIO(s)
reader = csv.reader(buff)
for line in reader:
print(line)
>>> import csv
>>> s = '"Yes, this line",can be, parsed as csv'
>>> list(csv.reader([s]))[0]
['Yes, this line', 'can be', ' parsed as csv']
>>>
基本的には上記の@larsksだけが答えますが、より簡潔で、引用符内にコンマが含まれるcsv値で機能することを示しています。
あなたが私を賛成するなら、他の答えも賛成してください。 https://stackoverflow.com/a/35822856/1196339