添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

为什么当csv中存在换行时,python不能跳过第一行?

1 人不认可

我正在用python读取一个csv文件。我跳过第一行,那是简单的描述性元数据。这就是我正在做的事情。

f = open(in_file)
#skip the first row
next(f)
#...some data processing

这样做很好,但当第一行包含有换行符的单元格时(例如。

some random cell
with a new line

next(f)命令返回了包括该单元格在内的所有单元格,但以some random cell \n'结束,并没有删除这第一行中的任何其他单元。为什么会出现这种情况,我怎样才能确保整个第一行被删除,而不考虑单元格中的换行字符?

2 个评论
因为行迭代器不知道csv的语法。使用内置的 csv 模块代替,或者更好的是使用pandas read_csv
没有 "单元格",你处理的是一个文本流。使用 csv 模块来处理csv格式的文本
python
file
csv
yalpsid eman
yalpsid eman
发布于 2019-09-24
1 个回答
jferard
jferard
发布于 2019-09-25
已采纳
0 人赞同

你正在处理一个非常基本和普遍的问题(这就是你被降级的原因,我猜)。 在现代操作系统中,文件是没有类型的:它们的内容只是一连串的字节,而这些字节的意义是由应用程序赋予的。 (二进制与文本的区别在Windows中仍然是一个反常的区别)。操作系统的这一关键和基本属性被桌面应用程序(Windows、Gnome、KDE、Finder...)所掩盖。我点击一个".csv "文件,桌面就会打开Calc(或Excel),我点击一个".exe "文件,Windows就会启动该程序,......但这只是传统的。在操作系统层面,文件的内容只是字节,仅此而已。这有一个非常好的理由:在操作系统层面上,打字的文件会帮助你一个星期,而你的余生都要和它斗争。

回到你的问题上来。Python 不会为你决定你的 "xyz.csv" 文件应该以某种特定的方式打开。它打开文件,让你以字节或字符的形式读取,你必须自己处理内容。幸运的是,Python 自带 "内部电池",提供了 csv module 来包装你的文件。

import csv