Замена слова в файле - PullRequest
       9

Замена слова в файле

0 голосов
/ 13 декабря 2018
badcontent = []
filebadword = "badwords.txt"
with open(filebadword, 'r') as read_file:
  badcontent = read_file.readlines()

goodcontent = []
filegoodword = "goodword.txt"
with open(filegoodword, 'r') as read_file:
  goodcontent = read_file.readlines()


msgfile = "msg.txt"
file = open(msgfile, "r")
for word in file:
  if word in badcontent:
    file = file.write(word.replace([badcontent],[goodconent]))
    print(file.readline())
    file.close()
  elif():
    print(file.readline())
    file.close()

Я хочу попробовать заменить «неуместное» слово в текстовом MSG-файле дружественным словом.

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Я не понял, присутствуют ли в вашем файле Bad and Good только параметр.Если у вас нет словаря, вы не можете внести исправления.

dictionary={}
dictionary['****']='#######'
dictionary['inappropriate_word']='good'

new_file=''
for line in file:
    for word in line:
        if word in dictionary:
            new_file+=dictionary[word]
        else:
            new_file+=word
        new_file+=" "
    new_file+="\n"

или

dictionary={}
dictionary['****']='#######'
dictionary['inappropriate_word']='good'

l=open(file,"r").read()
for i in dictionary:
    l.replace(i,dictionary[i])
o=open("fileoutput.txt","w")
o.write(l)
o.close()

, если у вас есть 2 файла со словами, вы можете импортировать и хранить информацию в словаре

0 голосов
/ 13 декабря 2018

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 заявлений.

...