我们正在将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']
。我希望该行是该行中所有值的列表。我该怎么办?
答案 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"))