在Google App Engine上的python中使用"通用换行符"上传和解析csv文件

gre*_*reg 11 python csv google-app-engine

我正在从GAE中的表单上传一个csv/tsv文件,我尝试用python csv模块解析该文件.

此处描述的一样,GAE中上传的文件是字符串.
所以我将上传的字符串视为类文件对象:

file = self.request.get('catalog')
catalog = csv.reader(StringIO.StringIO(file),dialect=csv.excel_tab)
Run Code Online (Sandbox Code Playgroud)

但我的文件中的新行不一定是'\n'(感谢excel ..),并且它生成了一个错误:
错误:在未引用字段中看到的换行符 - 是否需要以通用换行模式打开文件?

有谁知道如何使用StringIO.StringIO来处理像在通用换行符中打开的文件一样的字符串?

the*_*oom 5

怎么样:

file = self.request.get('catalog')
file  = '\n'.join(file.splitlines())
catalog = csv.reader(StringIO.StringIO(file),dialect=csv.excel_tab)
Run Code Online (Sandbox Code Playgroud)

或者在评论中指出,csv.reader()支持列表输入,因此:

file = self.request.get('catalog')
catalog = csv.reader(file.splitlines(),dialect=csv.excel_tab)
Run Code Online (Sandbox Code Playgroud)

或者如果将来request.get支持读取模式:

file = self.request.get('catalog', 'rU')
catalog = csv.reader(StringIO.StringIO(file),dialect=csv.excel_tab)
Run Code Online (Sandbox Code Playgroud)

  • @greg我会采用速度命中并使用`catalog = csv.reader(file.splitlines(),dialect = csv.excel_tab)`.(csv阅读器可以接受字符串列表) (5认同)