【发布时间】:2022-01-21 00:10:31
【问题描述】:
我已经解析了一个 HTML 文件并使用 Beautiful Soup 提取了文本,但是抓取的一些文本可能有不正确的引号(不同的字体或字符等),所以在我打印出来的 JSON 文件中,我看到了转义引号。我试图用空字符串替换它们,但由于它们与我从键盘键入的引号不兼容,我不认为它们在我的 replace() 函数中被识别为引号,这意味着替换函数是不工作。我还尝试通过在要替换的内容前面放一个小“r”来将替换声明为原始字符串,但这没有任何区别。如何删除转义引号?
代码:
'tag': div.text.split(',', 1)[0].replace('\n', '').replace('\u00a0', ' ').replace(r'\"', ''), # remove chars ',', ' \n', and '\u00a0',
JSON:
{
"tag": "\"Data Scientists You May Know\" suggester",
"definition": "",
"source": [
{
"title": "Data Scientists You May Know",
"URL": "https://learning.oreilly.com/library/view/data-science-from/9781492041122/ch01.html#RSdata01"
},
{
"title": "Data Scientists You May Know",
"URL": "https://learning.oreilly.com/library/view/data-science-from/9781492041122/ch01.html#idm45635773432952"
}
]
},
如您所见,标签名称为"\"Data Scientists You May Know\" suggester",而应为"Data Scientists You May Know suggester"。
【问题讨论】:
-
你不想要
r'\"'字符串实际上不包含反斜杠,它只包含一个引号。由于外部引号,JSON 有一个反斜杠。你只想要.replace('"','')。 -
这些是“智能引号”,Unicode
'\u201c'和'\u201d'。 -
@TimRoberts 很遗憾,
.replace('"', '')没有删除任何内容。 -
@tromgy 很有趣。是否可以将它们更改为 unicode 然后在它们上调用 replace() 函数?
-
只需使用
replace('\u201c', '').replace('\u201d', '')而不是replace(r'\"', '')即可删除它们
标签: python beautifulsoup