我需要一些帮助使用faker将随机测试数据写入csv文件

时间:2015-03-01 09:12:36

标签: python python-2.7 csv faker

我是Python 2.7的新手 我试图使用Python faker包将一些随机测试数据写入csv文件。 我已经将一个随机的名字值存储到名为' firstNameList'的List变量中。 然后我使用write_to_csv.writerow(firstNameList)将值写入csv

csv文件中写出的值是 |(' first_name',u' Monica')|

我只想要csv中的名字值,例如莫妮卡 我不想要整个字符串|(' first_name',u' Monica')|在csv。

我注意到我的另一个名字变量firstName1的值是Loraine 这个很好用。但是当我尝试将firstName1写入csv时输出为 f i r s t _ n a m e

我的代码如下 我将值存储在List变量中,因为我想填充csv中的几行。说100行随机数据。 如果我将100个名字存储到名称列表变量中,那么我可以使用for循环遍历List并将值输出到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)

1 个答案:

答案 0 :(得分: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