Python имеет string.replace(old, new)
-метод.Вы пытаетесь заменить одно слово списком, и это приведет к ошибке.Вот пример того, как вы должны пройти весь текст:
from random import randint
with open("text_msg_file.txt", 'rb') as f:
lines = f.readlines()
# Text file containing bad words, assume only one word/line
with open("badcontent.txt", 'rb') as f:
badcontent = f.readlines()
# Text file containing good words, assume only one word/line
with open("goodcontent.txt", 'rb') as f:
goodcontent = f.readlines()
# Strip new line character from words
lines = [word.strip("\n") for word in lines]
badcontent = [word.strip("\n") for word in badcontent]
goodcontent = [word.strip("\n") for word in goodcontent]
for i in range(len(lines)):
line = lines[i]
# List of words on single line. Line splitted from whitespaces
words = line.split(" ")
# Loop through all words
for j in range(len(words)):
# Get random integer for index
index = randint(0, len(goodcontent))
if words[j] in badcontent:
# Replace bad word with a good word
words[j] = goodcontent[index]
# Join all words from a list into a string
line = " ".join(words)
# Put string back to list of lines
lines[i] = line
# Join all lines back into one single text
new_text = "\n".join(lines)
with open("new_msg.txt", "wb") as f:
f.write(new_text)
Это записывает текст с замененными словами в файл new_msg.txt
.В Python 2.7 используйте 'rb'
и 'wb'
для open
-статем, чтобы разрешить открытие в двоичном режиме, чтобы код был более устойчивым.В Python 3 используйте только 'r'
и 'w'
для open
заявлений.