Python:无法删除文本文件中不需要的逗号

时间:2014-05-08 14:40:50

标签: python regex csv

我有一个CSV文件,其中包含有关人员的信息:

name,age,height

Maria,25,172

George,45,180,

Peter,23,179,

问题在于某些字符串最后包含一个额外的逗号,而有些字符串则没有(这是因为这些信息是在另一个处理原始数据的Python脚本中使用urlopen从Internet获取的)

我试着写一些代码来解决这个问题,但我无法得到结果。我写的:

import re


data = open('file.csv').read()

new_data = re.sub('\W$', '', data)
print(new_data)

但是此代码仅替换整个文档中的最后一个逗号。我试着写一个循环,计算所有行,然后分析每一行,但也许我的编码技巧不是很好,我没有成功。请告诉我,我做错了什么。

2 个答案:

答案 0 :(得分:4)

问题是整个文件是作为字符串处理的,而$只匹配字符串的结尾。 您最好使用re.sub('\W\n', '\n', data)

您也可以在没有正则表达式的情况下执行此操作:new_data = data.replace(',\n', '\n'),这可能更快。

答案 1 :(得分:0)

这很简单,你真的不需要regex(及其可能更快,不使用它)

这就是我要做的事情:

with open("file.csv", 'r') as f:
    newLines = [line[:-1] if line.endswith(",") else line for line in f.readlines()]

然后您需要做的就是将其写回文件