猿问

从json文件中的字符串中删除标签(\r、\n、<、>)

我知道以前有人问过类似的问题,但到目前为止我无法解决我的问题,所以提前道歉。


我有一个带有文本的 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())

但它对文件中的文本没有任何作用。我尝试了不同的变化,但似乎没有任何改变。


我怎样才能让我的代码正常工作?或者,如果有另一种更简单或更快的方法,我也会很感激阅读这些方法。


顺便说一句,我在 anaconda 上使用 python 3.6。


慕尼黑5688855
浏览 510回答 1
1回答

交互式爱情

你可以使用 python 内置函数来做到这一点replace()。with open('test.json', 'r', encoding = 'utf-8') as f:&nbsp; &nbsp; content = f.read()&nbsp; &nbsp; invalid_tags = ['\\r', '\\n', '<', '>', '-', ';']&nbsp; &nbsp; for invalid_tag in invalid_tags:&nbsp; &nbsp; &nbsp; &nbsp; content = content.replace(invalid_tag, '')&nbsp; &nbsp; content = content.replace('&u', 'ü')print(content)输出:...&nbsp; This is a test.&nbsp; Mit freundlichen GrüumlssenMike Klence ...
随时随地看视频慕课网APP

相关分类

Python
我要回答