Python: обновление нескольких слов в текстовом файле на основе текста в другом текстовом файле с помощью модуля in_place - PullRequest
0 голосов
/ 12 ноября 2018

У меня есть текстовый файл скажем storyfile.txt
Содержимое файла storyfile.txt имеет вид

'Twas brillig, и скользкие toves Делали круговорот и валялись в вабе; Все мимсы были бороговыми, И Момент raths Outgrabe


У меня есть другой файл - hashfile.txt, который содержит несколько слов, разделенных запятой (,)

Содержимое hashfile.txt:

Все, mimsy были, то, borogoves, Raths, мов


Моя цель

Моя цель -
1. Прочитайте hashfile.txt
2. Вставьте хэштег в каждое слово, разделенное запятыми
3. Прочитайте storyfile.txt. Найдите те же слова, что и в hashtag.txt, и добавьте хэштег к этим словам.
4. Обновите storyfile.txt словами, помеченными хеш-тегами.

Мой код Python до сих пор

import in_place

hashfile = open('hashfile.txt', 'w+')
n1 = hashfile.read().rstrip('\n')
print(n1)

checkWords = n1.split(',')
print(checkWords)

repWords = ["#"+i for i in checkWords]
print(repWords)
hashfile.close()

with in_place.InPlace('storyfile.txt') as file:
    for line in file:
        for check, rep in zip(checkWords, repWords):
            line = line.replace(check, rep)
            file.write(line)

Выход

можно увидеть здесь https://dpaste.de/Yp35

Почему этот вид выхода идет? Почему в последнем предложении нет новой строки? Где я не прав?
Выход
Прикрепленное изображение

Текущий рабочий код для одного текста

import in_place

with in_place.InPlace('somefile.txt') as file:
    for line in file:
        line = line.replace('mome', 'testZ')
        file.write(line)

1 Ответ

0 голосов
/ 13 ноября 2018

Посмотрите, поможет ли это. Это соответствует цели, которую вы упомянули, хотя я не использовал модуль in_place.

hash_list = []
with open("hashfile.txt", 'r') as f:
    for i in f.readlines():
        for j in i.split(","):
            hash_list.append(j.strip())
with open("storyfile.txt", "r") as f:
    for i in f.readlines():
        for j in hash_list:
            i = i.replace(j, "#"+j)
        print(i)

Дайте мне знать, если вам потребуются дополнительные разъяснения по этому поводу.

...