0

私は CSV ドキュメントを見てきましたが、行の繰り返しでいくつかの問題が発生しています。誰かがそれをクリアできたら、それは素晴らしいことです。たとえば、次のコードを見てください。

custom_feature_string = 'Custom feature 1;custom feature, 2; Custom feature3; custom "feature" 4; customfeature5'
cfeature = StringIO.StringIO(custom_feature_string)
reader = csv.reader(cfeature, delimiter=';', skipinitialspace=True)
for row in reader:
    print '\n'.join(row)

これで、画面への出力に関しては問題ありませんが、 に置き換えようとprint '\n'.join(row)するとprint row、各エントリを含むリストが出力されます。イテレータを通過するたびに、各エントリを一度操作できるようにしたいと考えています。したがって、各エントリをデータベースに保存できます。これを行う方法に関する提案はありますか?

4

2 に答える 2

1

変数名は、それらが表すものを正確に反映していません。

reader = csv.reader(cfeature, delimiter=';', skipinitialspace=True)
for row in reader:
    print '\n'.join(row)

row、あなたのコードでは、実際には CSV 内のすべての行のリストです。だから、これを見てみましょう:

reader = csv.reader(cfeature, delimiter=';', skipinitialspace=True)
for data in reader:
    for row in data:
        #do something with row

その後、行ごとに処理できます。

于 2013-07-25T03:00:23.403 に答える
1

あなたは繰り返すことができますrow

import StringIO
import csv

custom_feature_string = 'Custom feature 1;custom feature, 2; Custom feature3; custom "feature" 4; customfeature5'
cfeature = StringIO.StringIO(custom_feature_string)
reader = csv.reader(cfeature, delimiter=';', skipinitialspace=True)
for row in reader:
    print '\n'.join(row)
    for item in row:
        print "X", item, "X"

これにより、次の結果が得られます。

Custom feature 1
custom feature, 2
Custom feature3
custom "feature" 4
customfeature5
X Custom feature 1 X
X custom feature, 2 X
X Custom feature3 X
X custom "feature" 4 X
X customfeature5 X

X必要に応じて、データベースに挿入するなど、データを 's で囲むよりも複雑な方法でデータを操作できます。行を全体として、またはセグメント単位で操作し、データベースの挿入をセグメントごとに 1 回、行の変更されたバージョンで、またはその他の方法で行うことができます。


複数行の例

import StringIO
import csv

custom_feature_string = 'Custom feature 1;custom feature, 2; Custom feature3; custom "feature" 4; customfeature5'

multiline = custom_feature_string + "\n" + custom_feature_string
cfeature = StringIO.StringIO(multiline)
reader = csv.reader(cfeature, delimiter=';', skipinitialspace=True)
for row in reader:
    print "New line"
    for item in row:
        print "X", item, "X"

出力

New line
X Custom feature 1 X
X custom feature, 2 X
X Custom feature3 X
X custom "feature" 4 X
X customfeature5 X
New line
X Custom feature 1 X
X custom feature, 2 X
X Custom feature3 X
X custom "feature" 4 X
X customfeature5 X
于 2013-07-25T03:01:32.677 に答える