Заменить / удалить подстроку в открытом текстовом файле без ввода данных пользователем (Python 3) - PullRequest
0 голосов
/ 29 июня 2018

Как использовать методы Python для замены подстрок (или удаления части строки) в открываемом вручную файле .txt. Пользователь уже открыл текстовый файл, и сценарий python должен заменить подстроку в этом файле пробелом (или удалить его, что проще).

Текстовый файл строки выглядит следующим образом (он был частью веб-сайта и может иметь несколько строк, но для простоты я поставил только первую строку):

<tr><td>Subtitle</td><td><div class="Current temperature"><!-- here -- <!-- here2 --><div class="London"></div></div><div class="here3"></div><div class="Current temperature"><!-- here4 <!-- /react-text --><div class="Paris"></div></div></td></tr>

Окончательный результат должен быть в две строки:

London
Paris

Я уже искал много тем здесь, многие из них предполагают ввод пользователем строки, которая должна быть заменена, и еще один ввод для новой строки.

Этот небольшой скрипт не относится к этому типу, он должен уже содержать подстроку, которую нужно заменить (без ввода пользователя), так что это части:

1. <tr><td>Subtitle</td><td><div class="Current temperature"><!-- here -- <!-- here2 --><div class="
2. "></div></div><div class="here3"></div><div class="Current temperature"><!-- here4 <!-- /react-text --><div class="
3. "></div></div></td></tr>

и он должен делать это автоматически при запуске. У меня также есть проблемы с кавычками и HTML-тегами, поэтому я часто получаю синтаксические ошибки.

В других темах на эту тему я нашел это и попробовал этот код:

file = open("C:/Users/blue11440/Desktop/example-text-file.txt", "r")
str = file.readlines()

x = str.replace("<tr><td>Subtitle</td><td><div class="Current temperature"> 
<!-- here -- <!-- here2 --><div class="", "")

Среди других ошибок я получаю это:

AttributeError: 'list' object has no attribute 'replace'
AttributeError: '_io.TextIOWrapper' object has no attribute 'replace'

Я пробовал replace, delete, remove методов с небольшим успехом, есть ли лучший способ?

1 Ответ

0 голосов
/ 29 июня 2018

Для вашей последней проблемы: file.readlines () возвращает список, который содержит элемент для каждой строки.

.replace () - это строковый (!) Метод. Поэтому попробуйте перебрать список:

for line in file.readlines():
    line.replace(....)

Редактировать: Я думаю, что у вас есть проблема с "в строке: str.replace (" Субтитры

Используйте одинарные кавычки, чтобы избежать этого: str.replace ( 'Subtitle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...