Python 使用django输出csv

Python 使用django输出csv,python,django,csv,Python,Django,Csv,上面的代码是为从django输出csv文件而编写的。我面临的问题是,导出/输出文件的内容没有显示在csv文件编辑器的不同框中。对于数据(列表)中的每个条目,它被打印在同一个框中,而应该在不同的框中解释每个条目的值(名字、姓氏) csv文件中的实际结果: def export_csv(request): response = HttpResponse(mimetype = 'text/csv') response['Content-Disposition'] = 'attachme

上面的代码是为从django输出csv文件而编写的。我面临的问题是,导出/输出文件的内容没有显示在csv文件编辑器的不同框中。对于数据(列表)中的每个条目,它被打印在同一个框中,而应该在不同的框中解释每个条目的值(名字、姓氏)

csv文件中的实际结果:

def export_csv(request):
    response = HttpResponse(mimetype = 'text/csv')
    response['Content-Disposition'] = 'attachment; filename=exported.csv'
    writer = csv.writer(response)
    data = [['First-Name','Last-name'],['Foo','baar']]
    for entry in data:
            writer.writerow(entry)
    return response
|First-Name,Last-Name |
|Foor,bar             |
期望值:

def export_csv(request):
    response = HttpResponse(mimetype = 'text/csv')
    response['Content-Disposition'] = 'attachment; filename=exported.csv'
    writer = csv.writer(response)
    data = [['First-Name','Last-name'],['Foo','baar']]
    for entry in data:
            writer.writerow(entry)
    return response
|First-Name,Last-Name |
|Foor,bar             |

如何获得独立于列表大小及其内容导出文件的机制?

您可以使用自定义分隔符等为csv.writer设置自己的方言:

|First-Name |Last-Name |
|Foo        |Baar      |
不同编辑器出现问题的主要原因是每个编辑器本身都有不同的行为—您应该正确地将CSV分隔符设置为实际使用的分隔符。另一个可能的原因是,您没有对每个CSV值使用引号(在方言类中引号=1)。 根据您的预期输出,您还可以期待一件事——每个字段的长度相同,其余部分填充空格——这是csv模块无法完成的,但您可以使用标准python格式将每个单元格的数据格式化为相同的长度,如:

class dia2(csv.Dialect):
    delimiter = '\t' # delimiter should be only 1-char
    quotechar = '"'
    escapechar = None
    doublequote = True
    skipinitialspace = False
    lineterminator = '\r\n'
    quoting = 1
writer = csv.writer(response, dialect=dia2)
...

您以前发布的文件实际上与我的完全相同。需要记住的一点是,CSV实际上只是逗号分隔的值(如您所见)。这实际上是你用来正确解释它的编辑器的工作(例如,当写入CSV并在Excel中打开时,我有时不得不告诉它使用逗号分割)。是的,正如你所说的,它正在工作,当我用逗号分割文件时,它显示了我预期的结果。我认为在默认环境中,有某种方法可以显示预期的结果,而不是使用csv编辑器以逗号分割文件。如果您使用Excel,请尝试创建编写器,如
writer=csv.writer(response,dialogue='Excel')
——这可能对您的情况有所帮助。@Navid,此csv文件保存到哪里?什么目录?我运行了您的代码,但找不到文件保存的位置。