python - 使用谷歌应用引擎上传和解析 csv 文件

标签 python google-app-engine csv

我想知道是否有对 python 和 gae 有更好了解的人可以帮助我解决这个问题。我正在将一个 csv 文件从表单上传到 gae 数据存储区。

class CSVImport(webapp.RequestHandler):
  def post(self):
     csv_file = self.request.get('csv_import')
     fileReader = csv.reader(csv_file)
     for row in fileReader:       
       self.response.out.write(row) 

我遇到了其他人在这里提到的相同问题 - http://groups.google.com/group/google-appengine/browse_thread/thread/bb2d0b1a80ca7ac2/861c8241308b9717

也就是说,csv.reader 遍历每个字符而不是行。一位谷歌工程师留下了这样的解释:

The call self.request.get('csv') returns a String. When you iterate over a string, you iterate over the characters, not the lines. You can see the difference here:

 class ProcessUpload(webapp.RequestHandler): 
   def post(self): 
     self.response.out.write(self.request.get('csv')) 
     file = open(os.path.join(os.path.dirname(__file__), 'sample.csv')) 
     self.response.out.write(file) 

     # Iterating over a file 
     fileReader = csv.reader(file) 
     for row in fileReader: 
       self.response.out.write(row) 

     # Iterating over a string 
     fileReader = csv.reader(self.request.get('csv')) 
     for row in fileReader: 
       self.response.out.write(row) 

我真的不理解这个解释,并且没有成功实现它。任何人都可以对此提供更清晰的解释和建议的修复方法吗?

谢谢, 八月

最佳答案

简短的回答,试试这个:

fileReader = csv.reader(csv_file.split("\n"))

长答案,请考虑以下内容:

for thing in stuff:
  print thing.strip().split(",")

如果 stuff 是一个文件指针,那么每个东西都是一行。如果东西是一个列表,那么每个东西都是一个项目。如果 stuff 是一个字符串,则每个东西都是一个字符。

遍历 csv.reader 返回的对象会给你类似于遍历传入的对象的行为,只是每个项目都经过 CSV 解析。如果您遍历一个字符串,您将获得每个字符的 CSV 解析版本。

关于python - 使用谷歌应用引擎上传和解析 csv 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2970599/

相关文章:

python - 单击 HTML 按钮在后端运行 Python 程序

python - etree 克隆节点

python - 使用 python 和 selenium 在 IE 中的新选项卡和选项卡切换中打开一个 Url

python - 谷歌应用引擎 (Python) : Allow entity 'previewing before ' submit'

java - 用于私有(private)消息的 GAE 数据存储实体

mysql - 自动将数据从数据库导出到 CSV 文件

python - Django "set_password()"函数不工作

google-app-engine - GAE 和 JPA 持久性异常

java - 解析包含引号和换行符的逗号分隔值

javascript - 使用 d3 从 CSV/JSON 读取西里尔文本