1

みんな。

"20568078","240431","jpg","St, Carolina 1920",,csvを解析したい["20568078","240431","jpg","St, Carolina 1920","",""]

これを使用して:

string=r'"20568078","240431","jpg","St, Carolina 1920",,'
reader = csv.reader(string)
for r in reader:
    print (r)

私は出力を得ました:

['20568078']
['', '']
['240431']
['', '']
['jpg']
['', '']
['St, Carolina 1920']
['', '']
['', '']

['', '']不要な を削除し、最後の 2 つ,,""とに変更する方法を知りたい""

ありがとうございました。

4

2 に答える 2

4

StringIOこの文字列をファイルのようなオブジェクトとして扱うために使用します

>>> import csv
>>> from StringIO import StringIO
>>> string=r'"20568078","240431","jpg","St, Carolina 1920",,'
>>> for r in csv.reader(StringIO(string)):
        print (r)


['20568078', '240431', 'jpg', 'St, Carolina 1920', '', '']

http://docs.python.org/2/library/csv.html#csv.reader

csv.reader(csvfile, dialect='excel', **fmtparams)

指定された の行を反復処理するリーダー オブジェクトを返しますcsvfile。iterator プロトコルをサポートし、そのメソッドが呼び出されるcsvfileたびに文字列を返す任意のオブジェクトにすることができます—オブジェクトとオブジェクトの両方が適しています。next()filelist

コードの問題は、単一の文字列をreader. 次に、リーダーは各文字として解釈します。例えば。

>>> string=r'"20568078","240431","jpg","St, Carolina 1920",,'
>>> i = iter(string)
>>> next(i)
'"'
>>> next(i)
'2'

あなたがそれに渡す iterable をcsv呼び出すおおよその方法です。nextただし、複数行の文字列を表す二重引用符を使用すると、すべてが 1 つの部分になる理由が説明されます。

于 2013-05-14T06:45:21.340 に答える
2

文字列のリストをcsv.readerコンストラクターに渡すことができます。

>>> import csv
>>> string=r'"20568078","240431","jpg","St, Carolina 1920",,'
>>> reader = csv.reader([string])
>>> print reader.next()
['20568078', '240431', 'jpg', 'St, Carolina 1920', '', '']
于 2013-05-14T06:55:11.297 に答える