csv.reader无法正常工作

时间:2015-08-23 11:26:29

标签: python google-app-engine csv

我们正在将Google App Engine与Python一起用于我们的应用程序。我编写了一个从CSV文件导入用户的代码。这是代码:

import csv

users_csv_file = self.request.get("users_csv_file")
csv_reader = csv.reader(users_csv_file)
row_index = 0
for row in csv_reader:
    logging.debug(row_index)
    logging.debug(row)
    .....
    row_index += 1

我有2个CSV文件。第一个:

"email","name",_activated,is_admin,personal_image,"domain"
test_1@example.com,"Mark Gates",true,true,http://www.google.com.au/test,hello.world.com
test_2@example.com,"Bill Zuck Junior 1",false,false,"",""
test_3@example.com,"Bill Zuck Junior 2",false,false,"",""

第二个:

email,name,_activated,is_admin,personal_image,domain
test_1@example.com,Mark Gates,TRUE,TRUE,http://www.google.com.au/test,hello.world.com
test_2@example.com,Bill Zuck Junior 1,FALSE,FALSE,,
test_3@example.com,Bill Zuck Junior 2,FALSE,FALSE,,

但问题是,第一个CSV文件的第一行是['email'],第二行是第一行的['e']。我希望该行是该行中所有值的列表。我该怎么办?

1 个答案:

答案 0 :(得分:2)

使用您拥有的数据,CSV阅读器应该可以正常工作。如果您收到字符串,则可以使用StringIO模块将其转换为文件类型流,如下所示:

import csv, StringIO

users_csv_file = StringIO.StringIO(self.request.get("users_csv_file"))
csv_reader = csv.reader(users_csv_file)

for row_index, row in enumerate(csv_reader):
    logging.debug(row_index)
    logging.debug(row)
    .....

此外,您可以使用enumerate功能自动提供row_index

如果您使用的是Python 3,则需要进行以下调整:

import io

users_csv_file = io.StringIO(self.request.get("users_csv_file"))