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

标签 python python-2.7 csv

我有数百个 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)

最佳答案

为什么要重新发明轮子?只需下载 sed + its dependencies , 然后

sed -i 's/Keyed,Bet/KeyedBet/ig' *.csv

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

sed -i "s/Keyed,Bet,KeyedBet/ig" *.csv

关于Python:查找和替换批处理 csv 文件中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29994623/

相关文章:

python - Alembic + Sqlalchemy 多列唯一约束

python - 使用 urllib2 执行 URL 并返回渲染的 HTML 输出,而不是 HTML 本身

python - 访问私有(private)类变量

Javascript:将 CSV 转换为键和值的单独数组

python - 使用 Pandas 比较具有不同列数的大型 CSV 文件

python - 在 exec 中用空局部变量列表理解 : NameError

python - 从列表中删除项目会导致列表变为 NoneType

python - 为什么 print ("text"+ str(var1) + "more text"+ str(var2)) 被描述为 "disapproved"?

python - 如何使用 Python 和 Flask 实现每秒更新一次的时钟?

javascript - JS/d3js,调用 CSV;有些数字给出 NaN 错误,有些则没有……修复?