python - 使用管道 (|) 归档 CSV,但我在字段中间使用管道
问题描述
我有一个 CSV 文件,由 ERP 生成,分隔符是竖线 (|)。但是在这个文件中,我有 ERP 中格式为 Text 的列,并且多行中的用户将管道(|)放在文本的中间,例如 |100019391 |99806354 | 电动汽车 | RES: 咨询 COBRO VVISTA - 智利 |31|24.06.2021|
这部分 EV | Res*** 是用户放置管道的字段。
我的错误是,当 pand 读取此行时,它给了我一个错误
跳过第 46 行:预计第 46 行有 28 个字段,看到 29
有修复它的选项吗?
Tks
解决方案
假设管道分隔符后不存在空格,那么我们可以使用以下正则表达式r"\|(?!\s)"
作为sep
参数。
样本输入:
col|col1|col2|col3|col4|
100019391 |99806354 |EV | RES: Consulta COBRO VVISTA - Chile |31|24.06.2021|
100019392 |99806777 |TEST - Chile |31|25.06.2021|
100019393 |99806779 |TE | ST - Chile |31|25.06.2021|
然后,我们可以如下导入上面的csv:
df = pd.read_csv(csv_filename,
usecols=range(5),
sep=r"\|(?!\s)",
lineterminator='\r',
engine='python')
usecols
根据您拥有的列数进行调整。lineterminator
根据文件中使用的行终止符进行调整。这engine='python'
是必需的,因为 python 会在sep
.
输出图片
推荐阅读
- teradata - 需要过去 17 天的平均值并与前 17 天比较
- apache-spark - 使用 Databricks 将 Excel 转换为标准格式
- javascript - 如何在 puppeteer 中自动执行页面上的 js 函数?
- jquery - JQuery DatePicker没有改变语言
- mysql - 通过 MySQL 计算字符串中的出现次数
- reactjs - 为ios构建本机反应后出错
- php - 正在显示缓存的图像,任何人都可以给我解决方案
- javascript - 表示下一个抛出错误,因为下一个未定义
- android - Android Auto 文本大小不起作用
- javascript - JS:在新页面打开时播放音频