将上传的CSV转换为Python列表
我有一个两列的csv文件,我通过一个HTML页面上传到服务器,然后用一个Python的cgi脚本来处理它。在服务器上查看这个文件时,它看起来像是一长串字符串,比如一个叫做test.csv的文件,内容是这样的:
col1, col2
x,y
变成了
('upfile', 'test.csv', 'col1,col2'\t\r\nx,y')
第一列包含我想处理的数据(也就是x),第二列包含它的标识符(y)。请问有没有更好的上传方式,还是我需要手动提取我想要的字段?这样做似乎很容易出错。谢谢!
4 个回答
2
看起来你的文件在上传HTML的时候被修改了。有没有什么原因让你不能直接通过FTP上传,把CSV文件放到需要的地方呢?
一旦CSV文件整理好了,这里有一个简单的函数,可以把它放进一个二维数组里:
def genTableFrCsv(incsv):
table = []
fin = open(incsv, 'rb')
reader = csv.reader(fin)
for row in reader:
table.append(row)
fin.close()
return table
这样你就可以在内存中对整个列表进行操作,而不是像Vitor的解决方案那样一部分一部分地从文件中提取数据。
3
你不能用csv模块来解析这个吗?这肯定比自己写代码要好。
可以参考下面这样的写法:
import csv
import cgi
form = cgi.FieldStorage()
thefile = form['upfile']
reader = csv.reader(thefile, delimiter=',')
for row in reader:
for field in row:
doThing()
编辑:我在这里纠正一下我之前的回答,参考了下面的ars的回答。