首页 > 解决方案 > 读取 csv 文件时如何修复非法换行值

问题描述

我在使用 Python 3.7 读取 .csv 文件时遇到了问题。当我写道:


import csv
with open ('iris.csv', newline =' ') as csv_file:
    rows = csv.reader(csv_file)
    for row in rows:
        print(row)

并运行代码,它只是说:

ValueError                                Traceback (most recent call last)
<ipython-input-2-42d17202da4e> in <module>()
      1 import csv
----> 2 with open ('iris.csv', newline =' ') as csv_file:
      3     rows = csv.reader(csv_file)
      4     for row in rows:
      5         print(row)

ValueError: illegal newline value:  

我该如何解决这个问题?为什么''具有非法值?我预计会是这样的:

['sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'species']
['5.1', '3.5', '1.4', '0.2', 'setosa']
['4.9', '3', '1.4', '0.2', 'setosa']
['4.7', '3.2', '1.3', '0.2', 'setosa']
['4.6', '3.1', '1.5', '0.2', 'setosa']

谢谢!

标签: python

解决方案


来自文档:https ://docs.python.org/3/library/functions.html#open

换行控制通用换行模式的工作方式(它仅适用于文本模式)。它可以是 None、''、'\n'、'\r' 和 '\r\n'。

在您的情况下,newline =' '它是无效的,因为它不是文档中的值中列出的字符之一。

我认为您delimitercsv.reader中的 csv 感到困惑,这是将 csv 文件中的两个值分开的原因

Dialect.delimiter
用于分隔字段的单字符字符串。它默认为“,”。

例子

a,b,c,d
e,f,g,h

根据您的分隔符,您可以delimiter在读取 csv 时在字段中指定

rows = csv.reader(csv_file, delimiter="<your_delimiter>")

推荐阅读