【发布时间】:2015-05-01 20:27:01
【问题描述】:
我有数百个 csv 文件,我想搜索字符串“Keyed,Bet”并将其更改为“KeyedBet”。该字符串可能在文件中,也可能不在文件中,并且可能在不同文件的不同列中。
我拼凑了下面的脚本,但它不起作用。我肯定错误地使用了replace(),但不太清楚如何,并且在我真的不需要时创建一个新文件 - 如果它只是更新当前文件并以相同的名称保存,那将是很好(但超出了我的初学者能力)。
我哪里出错了?感谢您的帮助!
import os
import csv
path='.'
filenames = os.listdir(path)
for filename in filenames:
if filename.endswith('.csv'):
r=csv.reader(open(filename))
new_data = []
for row in r:
replace("Keyed,Bet","KeyedBet")
new_data.append(row)
newfilename = "".join(filename.split(".csv")) + "_edited3.csv"
with open(newfilename, "w") as f:
writer = csv.writer(f)
writer.writerows(new_data)
【问题讨论】:
-
“它不起作用。”为什么不?它做错了什么?有什么错误吗?
-
老实说,这听起来像是
sedshell 命令(不是 python)的单行作业。 -
为什么要重新发明轮子?只需下载sed + its dependencies,然后下载
sed -i 's/Keyed,Bet/KeyedBet/ig' *.csv -
@rojo 让您的评论成为答案。
-
@Andy 好吧,第一个问题是我对 replace() 的误解。我知道它需要有一个定义的字符串才能调用,但我没有这样做,但我不知道如何让它将 csv 中的行视为要搜索的字符串。
标签: python python-2.7 csv