我有一个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)
但是此代码仅替换整个文档中的最后一个逗号。我试着写一个循环,计算所有行,然后分析每一行,但也许我的编码技巧不是很好,我没有成功。请告诉我,我做错了什么。
答案 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()]
然后您需要做的就是将其写回文件