我一直在热切地用谷歌搜索这个,但我无法真正缩小范围。我正在尝试解释一个 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)
