【发布时间】:2017-05-18 22:05:59
【问题描述】:
我用 BeautifulSoup 废弃了一个网页。 我得到了很好的输出,除了部分列表在获取文本后看起来像这样:
list = [u'that\\u2019s', u'it\\u2019ll', u'It\\u2019s', u'don\\u2019t', u'That\\u2019s', u'we\\u2019re', u'\\u2013']
我现在的问题是如何去除或用特殊字符替换这些双反斜杠。
如果我打印示例列表的第一个元素,输出看起来像
print list[0]
that\u2019s
我已经阅读了很多关于这个主题的其他问题/主题,但我最终更加困惑,因为我是一个考虑 unicode/编码/解码的初学者。
我希望有人可以帮助我解决这个问题。
谢谢! MG
【问题讨论】:
-
@mgruber 如果对你有帮助,记得接受答案
-
除非网页字面上包含这样的 unicode 转义序列(that\u2019s 而不是 that's),beautifulsoup 不会以这种形式返回字符串.它将返回文本而不转义任何内容。你是怎么得到这些字符串的?
-
我同时执行了一个正则表达式,似乎这就是问题所在。你对此有什么特别的解释吗?
-
你抓取过 JSON 结构的子部分吗?如果是这样,您应该尝试读取整个 JSON 值,使用
json.loads解析它并从那里访问您想要的部分。 -
我确实通过首先用
data = json.load(name_of_file)加载它来访问它们,然后我只用raw = data['html']得到了我想要的东西。我假设下一步我试图摆脱 cmets(仍然在某些情况下使用 BeautifulSoup 后留下了一些)raw = re-sub('(?s)<!--.*?-->', '',str(raw))让我的输出变得混乱。
标签: python unicode beautifulsoup backslash unicode-escapes