def censor2(filename):
infile = open(filename,'r')
contents = infile.read()
contentlist = contents.split()
print (contents)
print (contentlist)
for letter in contentlist:
if len(letter) == 4:
print (letter)
contents = contents.replace(letter,'xxxx')
outfile = open('censor.txt','w')
outfile.write(contents)
infile.close()
outfile.close()
此代碼在Python中工作。它接受一個'example.txt'文件,讀取它並循環,用字符串'xxxx'代替所有4個字母的單詞,並將其輸出到一個名爲censored.txt的新文件(保持原始格式!)。file.replace('abcd')也會替換'abcde'如何替換確切的值?
我用替換函數並找到要替換的單詞。但是,單詞'abcd'被替換,下一個單詞'abcde'變爲'xxxxe'
如何防止'abcde'被更改?
我無法得到下面的例子工作,但在使用re.sub模塊後,我發現下面的代碼只能替換4個字母的單詞而不是5個字母的單詞。
contents = re.sub(r"(\b)\w{4}(\b)", r"\1xxxxx\2", contents)
這個答案是downvoted,但他只是忘記了字符串文字前面的'r'。這是一個簡單的錯字/錯誤,任何人都可以輕鬆編輯答案來糾正錯誤。這突顯了Wiki-style協作/社區編輯與基於聲譽的個人競爭之間Stackexchange模型中的怪異張力。 – 2013-04-24 00:24:58
@CharlesSalvia這是我最近看到的最愚蠢的東西(downvotes)。也許另一個問題是,價格降低沒有足夠的懲罰? – David 2013-04-24 00:30:10
@大衛,這是一個棘手的問題 - 因爲如果得票數太多,沒有人願意付出代價,那麼蹩腳的回答就不會受到懲罰。我不知道最佳解決方案在這裏 - 但我絕對認爲SO的維基式協作/社區編輯方面是最被忽視的特徵。 – 2013-04-24 00:32:27