python - 为什么当有换行符时,python 无法跳过 csv 中的第一行?
问题描述
我正在用 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
' 结尾,并且不会删除第一行中的任何其他单元格。为什么会发生这种情况?如何确保删除整个第一行,而不管单元格中的换行符如何?
解决方案
您正在处理一个非常基本和普遍的问题(我猜这就是您被否决的原因):在现代操作系统中,文件没有类型:它们的内容只是一个字节序列,这些字节的含义由应用程序给出(二进制与文本在 Windows 中仍然是一个滑稽的区别)。操作系统的这一关键和基本属性被桌面应用程序(Windows、Gnome、KDE、Finder...)所掩盖:我单击“.csv”文件,桌面打开 Calc(或 Excel),单击在“.exe”文件上,Windows 启动程序,......但这只是传统的。在操作系统级别,文件的内容只是字节,仅此而已。这样做有一个很好的理由:在操作系统级别键入文件会帮助你一周,而你'
回到你的问题:Python 不会为你决定打开你的“xyz.csv”文件时要特别小心。它会打开文件并让您以字节或字符的形式读取它,您必须自己处理内容。幸运的是,Python 带有“内置电池”并提供了包装文件的csv
模块:
import csv
with open(path, 'r', encoding='...') as f: # set the encoding ofthe file, e.g. utf-8
reader = csv.reader(f) # you may set the delimiter, quote char, etc.
for row in reader:
... # do what you want with each row
推荐阅读
- c++ - 在特定时间间隔上读写日志c ++
- phpstorm - 有没有办法在 SQL 编辑区域的 PhpStorm 中制作自定义折叠块?
- angular - Angular 应用程序在划分视图路由时应该使用 ngModules 概念还是页面?
- c# - 在gridview中向上滚动时不保持位置
- java - JDBC连接池获取和关闭频率
- ios - OpenGLES 混合代码到金属翻译
- swift - 在超级视图中将不透明度设置为 0 后,子视图保持可见
- javascript - 如何在 Codeigniter 中使用 JSON 制作动态图表 js?
- cmake - cmake + TARGET_LINKER_FILE + add_library(接口导入)
- c# - CakeBuild:DotNetCoreBuild 与 DotNetBuild?