【问题标题】:Reading CSV in Python/Django - Weird Mapping for csvDict在 Python/Django 中读取 CSV - csvDict 的奇怪映射
【发布时间】:2017-12-12 03:53:51
【问题描述】:

我正在尝试在我的 views.py 文件中逐行读取 csv 文件。 csv文件结构如下:

xk、ab、cd

11、20、30

31、27、35

if request.method == "POST":
    pdb.set_trace()
    form = FormName(request.POST, request.FILES)
    file = request.FILES['csv'].read()
    if form.is_valid():       
        try:
            reader = csv.DictReader(file)
            for row in reader:
                xk = row['xk'] 

在执行上面的最后一行之前,当我在 pdb 中打印 'row' 时,我得到 {'x': 'k'}。但是,我应该得到“11、20、30”(或与该数据类似的东西,因为 DictReader 应该自动使用第一行作为标题。当我在 pdb 中打印文件时,我得到:

'xk,ab,cd\n11,20,30\n31,27,35' 等。如何正确读取 csv 文件?

【问题讨论】:

  • 我不确定request.FILES['csv'].read(),在with open 语句中打开文件不是一个选项?
  • with open 存在问题,这就是我使用 .read() 的原因。这有几个线程:/
  • (我得到这个错误:TypeError: 'coercing to Unicode: need string or buffer, InMemoryUploadedFile found')
  • 在不使用.read() 方法的情况下尝试相同的方法,例如this post
  • request.FILES['csv'] 返回一个 UploadedFile 对象,这似乎适合您的 dictReader 方法

标签: python django csv


【解决方案1】:

在 cmets 中解决:

尝试不使用.read() 方法,例如this post – PRMoureu

request.FILES['csv'] 返回一个 UploadedFile 对象,这似乎适合您的 dictReader 方法 – PRMoureu

^^成功了。谢谢!! – 用户7518095

【讨论】:

    猜你喜欢
    • 2010-12-17
    • 2022-01-18
    • 2014-04-19
    • 1970-01-01
    • 1970-01-01
    • 2020-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多