Python:在批处理 csv 文件中查找和替换字符串

dat*_*ppy 2 python csv python-2.7

我有数百个 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)
Run Code Online (Sandbox Code Playgroud)

roj*_*ojo 5

为什么要重新发明轮子?只需下载sed + 它的依赖项,然后

sed -i 's/Keyed,Bet/KeyedBet/ig' *.csv
Run Code Online (Sandbox Code Playgroud)

编辑:上面的命令在 Linux 中应该可以正常工作。Windowssed要求其引用的标记是双引号,而不是单引号。

sed -i "s/Keyed,Bet,KeyedBet/ig" *.csv
Run Code Online (Sandbox Code Playgroud)