即時通訊新的python。Python迭代字典替換字符串
我必須通過目錄搜索並找到其中包含字符串kyle和john的文件,並分別將它們替換爲mike和jim。每個文件可以有凱爾或約翰或兩者。
這裏是我的代碼
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一個test文件夾,在sample.txt的我有一句話凱爾它。但是當我運行該程序的文件沒有內容,甚至凱爾不在那裏。 你能告訴我什麼即時做錯了。我認爲問題在於我的replaceAll函數。在行if searchExp in line
沒有得到正確執行。你能告訴我爲什麼?
您是否嘗試使用例如打印報表?你可以打印'file'來檢查它是否被找到,'line'來檢查你的行,在正則表達式之後行,...這將幫助你自己回答你的問題! (對不起,不張貼答案,但這似乎是功課;)) – OBu
沒有人,即時學習蟒蛇。這是我在某處找到的問題。實際的問題要複雜得多。我爲自己做了簡單的事情。所以這是一個普遍的疑問。這不是我的功課。雅我已經試圖把打印陳述,在舊線和新線凱爾和麥克正在存儲,但當我通過他們的功能,我認爲有什麼問題。另外,你可以看到註釋行,如果我只是取消註釋掉那些舊行,在searchTerms.items()中換行,並用replaceAll(path,old,new)代替它的工作正常。 – Wolf
那麼開始吧,你正在寫stdout而不是文件。 –