我有一个格式如下的csv文件:
cat, mammal[1]
shark, fish[2]
dog, mammal[3]
tiger, mammal[4]
salmon, fish[5]
我想用方括号替换所有含有哺乳动物的行。
输出应如下:
cat, mam
shark, fish[2]
dog, mam
tiger, mam
salmon, fish[5]
到目前为止,我有一个读取/写入csv文件的代码:
import csv
with open('animals.csv', 'r') as fin, open("out.csv",'w') as fout:
writer = csv.writer(fout)
for row in csv.reader(fin):
re.sub(???) #stuck at writing the regular expression
writer.writerow(row)
答案 0 :(得分:0)
您可以使用以下正则表达式进行替换:
for row in csv.reader(fin):
row[1] = re.sub(r'(\s*mam)mal\[\d+\]', '\1', row[1])
writer.writerow(row)
请参阅demonstration。
答案 1 :(得分:0)
这里不需要正则表达式:
for row in csv.reader(fin):
if row[1].startswith("mammal["):
row[1] = "mam"
表现明智,这是最好的,因为
或者更快地使用生成器理解和writerows
:
with open('animals.csv', 'r') as fin, open("out.csv",'w') as fout:
csv.writer(fout).writerows([row[0],"mam"] if row[1].starswith("mammal[") else row for row in csv.reader(fin))
注意:似乎第二列中有一个前导空格。在这种情况下,请在搜索/替换字符串前面添加一个空格。