python - 读取 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']
谢谢!
解决方案
来自文档:https ://docs.python.org/3/library/functions.html#open
换行控制通用换行模式的工作方式(它仅适用于文本模式)。它可以是 None、''、'\n'、'\r' 和 '\r\n'。
在您的情况下,newline =' '
它是无效的,因为它不是文档中的值中列出的字符之一。
我认为您delimiter
对csv.reader中的 csv 感到困惑,这是将 csv 文件中的两个值分开的原因
Dialect.delimiter
用于分隔字段的单字符字符串。它默认为“,”。
例子
a,b,c,d
e,f,g,h
根据您的分隔符,您可以delimiter
在读取 csv 时在字段中指定
rows = csv.reader(csv_file, delimiter="<your_delimiter>")
推荐阅读
- python - 基于条件的行之间的熊猫分组
- python - Python 脚本计划在每个月的第一天凌晨 2:00 运行
- qt - 创建最坏情况字符串长度 .ts 翻译文件的工具?
- javascript - 仅在 Web 浏览器上运行 AWS 应用程序时出现 Expo 错误 (AmplifyI18n)
- amazon-web-services - 如何从带有附件块的 Terraform aws_network_interface 移动到 aws_network_interface_attachment 资源
- javascript - Mapbox GL设置符号层的不透明度
- c# - 如何以管理员权限运行任何具有 Windows 服务的程序
- vuetify.js - v-container 没有应用容器行为
- knockout.js - EpiServer:如何将 TinyMce 编辑器插入 webform 的控件(ascx)?
- android - Android - Adapter 是所有 *Adapter 的超级接口吗?