Удалить теги (\ r, \ n, <,>) из строки в json-файле - PullRequest
0 голосов
/ 30 ноября 2018

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

У меня есть json-файл ('test.json') с текстом в нем,Текст выглядит так:

"... >>\r\n>> This is a test.>\r\n> \r\n-- \r\nMit freundlichen Gr&uuml;ssen\r\n\r\nMike Klence ..."

Общий вывод должен быть простым текстом:

"... This is a test. Mit freundlichen Grüssen Mike Klence ..."

С Beautifulsoup я получил, чтобы удалить эти HTML-теги.Но все же те>, \ r, \ n- - остаются в тексте.Поэтому я попробовал следующий код:

import codecs
from bs4 import BeautifulSoup

with codecs.open('test.json', encoding = 'utf-8') as f:
    soup = BeautifulSoup(f, 'lxml')
    invalid_tags = ['\r', '\n', '<', '>']
    for tag in invalid_tags: 
        for match in soup.find_all(tag):
            match.replace_with()

print(soup.get_text())

Но он ничего не делает с текстом в файле.Я пробовал разные варианты, но, похоже, ничего не изменилось.

Как мне заставить мой код работать должным образом?Или, если есть другой, более простой или быстрый способ, я был бы благодарен, чтобы также прочитать об этих подходах.

Кстати, я использую Python 3.6 на Anaconda.

Заранее большое спасибоза вашу помощь.

1 Ответ

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

Вы можете сделать это, используя встроенную функцию Python replace().

with open('test.json', 'r', encoding = 'utf-8') as f:
    content = f.read()
    invalid_tags = ['\\r', '\\n', '<', '>', '-', ';']
    for invalid_tag in invalid_tags:
        content = content.replace(invalid_tag, '')
    content = content.replace('&u', 'ü')

print(content)

Выход:

...  This is a test.  Mit freundlichen GrüumlssenMike Klence ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...