私はPythonが初めてで、大好きです。しかし、私には問題があり、誰かが助けてくれることを願っています.
コンマで区切られた値の文字列があり、ループを使用して各値を個別に処理したいと考えています。
例えば
文字列 = '1,2,3,4,5,6,'
最初の値「1」を取得して、次の値に進む前に処理したいと考えています。
上記の場合、split
メソッドを使用して文字列をコンマで分割し、結果のリストを反復処理できます。
In [1]: s = '1,2,3,4,5,6,'
In [2]: s.split(',')
Out[2]: ['1', '2', '3', '4', '5', '6', '']
In [3]: for i in s.split(','):
...: if i:
...: print i
...:
...:
1
2
3
4
5
6
split
リストを返すので、ここで行うことは、結果のリストを繰り返し処理し、フィールドが空かどうかを確認することです。処理しません。このチェックを行うのは、文字列が で終わるため,
です。ご覧のとおり、空文字列が返されます。また、これは、値を区切るものだけでなく、すべてのコンマで分割されることに注意してください。
上記の場合は問題ありませんが、CSV 情報をより高度に処理したい場合のために、csv
モジュールにはそのための多数のオプションが用意されています。例えば:
In [1]: import csv
In [2]: s = '1,2,3,"four, five",6'
In [3]: for item in csv.reader([s]):
...: print item
...:
...:
['1', '2', '3', 'four, five', '6']
ここでは、csv
モジュールを使用して文字列を読み取り、item
返された はカンマ区切りの文字列を表しますが、特別な"four, five"
値は 1 つの値として扱われます。ただし、単一の文字列の場合、カンマで区切られた文字列要素で構成される単一のリストが返されることに注意してください。@JonClements が指摘しているように、要素自体を反復処理するクリーンな方法は、リスト自体を返すnext
onを呼び出すことです。csv.reader([s])
In [1]: import csv
In [2]: s = '1,2,3,"four, five",6'
In [3]: for item in next(csv.reader([s])):
...: print item
...:
...:
1
2
3
four, five
6