【问题标题】:How to split a csv line that has commas for formatting numbers如何拆分带有逗号以格式化数字的csv行
【发布时间】:2019-11-17 00:14:41
【问题描述】:

我使用请求下载了一个 cvs 文件,当我需要拆分时,它在数字字段中有一些格式化逗号,例如:

line='2019-07-05,sitename.com,"14,740","14,559","7,792",$11.47'

当我尝试拆分时:

data = line.split(',')

它得到了这个值:

['2019-07-05', 'nacion.com', '"14', '740"', '"14', '559"', '"7','792"', '$11.47']

我需要:

['2019-07-05', 'nacion.com', '14740', '14559', '7792', '$11.47']

我需要在 python 3.7 中解决它

欢迎任何帮助

【问题讨论】:

  • 使用 Pandas 打开 CSV 或使用 RegEx 进行更精细的解析

标签: python-3.x csv parsing


【解决方案1】:

我通常不喜欢使用正则表达式,但这里可能没有其他选择。试试这个 - 它基本上分两步删除内部,s:

import re

line='2019-07-05,sitename.com,"14,740","14,559","7,792",$11.47'

new_line = re.sub(r',(?!\d)', r"xxx", line).replace(',','').replace('xxx',',')
print(new_line)

输出

2019-07-05,sitename.com,"14740","14559","7792",$11.47

您现在可以使用:

data = new_line.split(',')

说明: 正则表达式,(?!\d) 选择line 中所有不在两位数之间的,s。 .sub 将那些(临时)替换为xxxs。下一个.replace 将剩余的,s 删除,这些,s 通过将它们替换为空,最后,最后一个.replace 通过将临时xxxs 替换为, 来恢复, 分隔符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-16
    • 1970-01-01
    • 2010-11-06
    • 1970-01-01
    • 2016-02-14
    • 1970-01-01
    • 2011-03-03
    相关资源
    最近更新 更多