Skip to main content
 首页 » 编程设计

python之在 Python 中使用正则表达式清理数字中的逗号

2024年08月30日32me-sa

我一直在热切地用谷歌搜索这个,但我无法真正缩小范围。我正在尝试解释一个 csv 值文件,这是一种足够常见的行为。但是我受到了超过一千的惩罚,即在引号和逗号中。我已经通过使用 csv 阅读器解决了这个问题,它从行中创建了一个数字列表,但之后我必须挑出逗号。

出于纯粹的学术原因,是否有更好的方法来使用正则表达式编辑字符串?从 08/09/2010,"25,132","2,909",650 到 08/09/2010,25132,2909,650。

(如果你喜欢 Vim,基本上我想把 Python 放在这上面: :1,$s/"\([0-9]*\),\([0-9]*\)"/\1\2/g :D )

请您参考如下方法:

使用csv模块进行第一阶段解析,使用正则表达式只看结果是否可以转换为数字。

import csv, re 
num_re = re.compile('^[0-9]+[0-9,]+$') 
for row in csv.reader(open('input_file.csv')): 
  for el_num in len(row): 
    if num_re.match(row[el_num]): 
      row[el_num] = row[el_num].replace(',', '') 

...尽管根本不使用正则表达式可能会更快:

for row in ([item.replace(',', '') for item in row] 
            for row in csv.reader(open('input_file.csv'))): 
  do_something_with_your(row)