1

私は Python 2.7 を初めて使用します。Python faker パッケージを使用して、ランダムなテスト データを csv ファイルに書き込もうとしています。ランダムな名の値を「firstNameList」と呼ばれるリスト変数に保存し、次に write_to_csv.writerow(firstNameList) を使用して値を csv に書き込みます。

csv ファイルに書き出される値は |('first_name', u'Monica')| です。

csv で名の値が必要なだけです。例: モニカ 文字列全体は必要ありません |('first_name', u'Monica')| csvで。

もう 1 つの名前変数 firstName1 の値が Loraine であることに気付きました。これを使用すると便利です。しかし、csv に firstName1 を書き込もうとすると、出力は first_name になります。

私のコードは以下です。
csvにいくつかの行を入力したいので、リスト変数に値を保存しています。100 行のランダム データがあるとします。100 個の名前を名前リスト変数に格納すると、for ループを使用してリストをループし、値を csv ファイルに出力できます。次に、住所、メール、電話などについても同じことを行います。

from faker.factory import Factory
import csv

def writeTo_csv(fake):
    with open('test.csv', 'wb') as csvfile:
    write_to_csv = csv.writer(csvfile, delimiter=' ', quotechar='|',     quoting=csv.QUOTE_MINIMAL)
    write_to_csv.writerow(['id,', 'TITLE,', 'FNAME,', 'SNAME,', 'GENDER,',     'ADD1,', 'ADD2,', 'ADD3,', 'ADD4,', 'PCODE,', 'PHONE,', 'MOBILE,', 'DOB'])
    firstName1 = "first_name"
    firstNameList = [(firstName1, getattr(fake, firstName1)())]
    print "%s = %s" % (firstName1, getattr(fake, firstName1)())
    print firstNameList
    write_to_csv.writerow(firstName1)

if __name__ == "__main__":
fake = Factory.create('en_GB')
writeTo_csv(fake)
4

1 に答える 1

1

リスト内のfirstNameList変数にタプルがあります。次のようなランダムな名前を抽出する必要があります。

firstNameList[0][1]

印刷するときwriterow()、反復可能なデータ構造を受け入れ、コンストラクターで指定された区切り文字で各要素を区切ります。そのため、文字列を渡す場合、各文字をフィールドとして想定するため、すべての名前を含むリストまたはタプルを作成して、それらを正しく区切る必要があります. 次の例では、次のようなタプルを使用しました。

write_to_csv.writerow((firstNameList[0][1],))

したがって、スクリプトは次のようになります。

from faker.factory import Factory
import csv 

def writeTo_csv(fake):
    with open('test.csv', 'wb') as csvfile:
        write_to_csv = csv.writer(csvfile, delimiter=' ', quotechar='|',     quoting=csv.QUOTE_MINIMAL)
        write_to_csv.writerow(['id,', 'TITLE,', 'FNAME,', 'SNAME,', 'GENDER,',     'ADD1,', 'ADD2,', 'ADD3,', 'ADD4,', 'PCODE,', 'PHONE,', 'MOBILE,', 'DOB'])
        firstName1 = "first_name"
        firstNameList = [(firstName1, getattr(fake, firstName1)())]
        print "%s = %s" % (firstName1, getattr(fake, firstName1)())
        print firstNameList
        write_to_csv.writerow((firstNameList[0][1],))

if __name__ == "__main__":
    fake = Factory.create('en_GB')
    writeTo_csv(fake)

test.csv次のようなファイルが生成されます。

id, TITLE, FNAME, SNAME, GENDER, ADD1, ADD2, ADD3, ADD4, PCODE, PHONE, MOBILE, DOB
Dana
于 2015-03-01T12:49:45.307 に答える