Python django-如何读取上载的csv文件,其中一个字段包含'\n';

Python django-如何读取上载的csv文件,其中一个字段包含'\n';,python,django,csv,Python,Django,Csv,我在尝试读取上载的csv文件时遇到问题,其中一个字段包含“\n”字符。e、 g.我有一个csv文件,其内容如下: 第1行:“一”,“这是示例” 第2行:“两个”,“这也是一个示例” 我可以在request.FILES中成功获取上载的文件,但当我循环该文件时,该行将因“\n”字符而中断。我的代码是: file = request.FILES.get('filename', None) for line in file: if line: line = line.deco

我在尝试读取上载的csv文件时遇到问题,其中一个字段包含“\n”字符。e、 g.我有一个csv文件,其内容如下:

  • 第1行:“一”,“这是示例”
  • 第2行:“两个”,“这也是一个示例”
我可以在request.FILES中成功获取上载的文件,但当我循环该文件时,该行将因“\n”字符而中断。我的代码是:

file = request.FILES.get('filename', None)
for line in file:
    if line:
        line = line.decode("utf-8")
        fields_set = list(csv.reader([line], skipinitialspace=True))[0]
在第一个循环中,变量“line”的内容是:
“one,这是”
。在第二个循环中,变量'line'得到值“sample”。但我想要的是“一”,这是一个示例。
感谢您的帮助。

您没有正确使用csv.reader。使用它代替文件读取器(文件行中的行对行)


使用csv.reader直接读取csvfile将弹出错误“迭代器应返回字符串,而不是字节(您是否以文本模式打开文件?)”使迭代器返回字符串。由于Django InMemoryUploadedFile返回的是字节,而不是字符串,因此没有为这种情况适当定义csv读取器。您需要执行类似于
f=csv.reader((x.decode('latin1')的操作,以在csvfile.readlines()中为x)
将行转换为字符串。
csvfile = request.FILES.get('filename', None)
readCSV = csv.reader(csvfile, delimiter=',')
for row in readCSV:
    print(row)