gpt4 book ai didi

Python遍历字典替换字符串

转载 作者:太空宇宙 更新时间:2023-11-04 03:54:26 28 4
gpt4 key购买 nike

我是 Python 新手。

我必须搜索目录并找到其中包含字符串 kyle 和 john 的文件,并将它们分别替换为 mike 和 jim。每个文件都可以有 kyle 或 john 或两者都有。

这是我的代码

import os
import fileinput
import sys

rootdir ='C:/Users/sid/Desktop/test'
searchTerms = {"kyle":"mike","john":"jim"}
#old= "kyle"
#new = "mike"

def replaceAll(file,searchExp,replaceExp):
for line in fileinput.input(file, inplace=1):
if searchExp in line:
line = line.replace(searchExp,replaceExp)
sys.stdout.write(line)

for subdir, dirs, files in os.walk(rootdir):
for file in files:
path=subdir+'/'+file
for oldline, newline in searchTerms.items():
replaceAll(path,oldline,newline)

现在我已经创建了一个测试文件夹,其中包含 sample.txt,在 sample.txt 中我有 kyle 这个词。但是当我运行程序时,文件没有内容,甚至 kyle 也不存在。你能告诉我我做错了什么吗?我认为问题出在我的 replaceAll 函数中。在 if searchExp in line 行中没有正确执行。你能告诉我为什么吗?

最佳答案

您必须写入所有行 - 不仅是因为 fileinput.input()(使用 inplace=1)将文本复制到临时文件以从中读取行并清除原始文件以再次写入所有行 - 但您必须自己编写所有行。

您可以如下移动 sys.stdout.write(line) 来解决问题。

def replaceAll(file,searchExp,replaceExp):
for line in fileinput.input(file, inplace=1):
if searchExp in line:
line = line.replace(searchExp,replaceExp)
sys.stdout.write(line)

如果没有 inplace=1,您必须自己做 - 从原始文件中读取所有行,将所有行写入临时文件,最后用临时文件替换原始文件。

关于Python遍历字典替换字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19630802/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com