繁体   English   中英

如何从字符串中删除外国转义引号? Python

[英]How to remove foreign escaped quotes from string? Python

我已经解析了一个 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"

因此,有问题的网站呈现如下:

网站截图

那些花引号指向不同的打开和关闭方式,它们被称为“智能引号”,它们的 UTF-16 十六进制代码是 201C 和 201D。

因此,要删除它们,您可以使用这些代码而不是r'\\"'

.replace('\u201c', '').replace('\u201d', '') 

但是一般如何解决这样的问题呢?

您可以直接从站点复制文本并将其保存在UTF-16编码的文本文件中。 然后查看文件的二进制内容,例如在 linux/macOS 上使用hexdump命令,找到字符代码并将它们转换为 Python 字符串,如'\\u\u0026lt;4-character hex unicode sequence>'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM