【问题标题】:Help Replacing Non-ASCII character in Python帮助在 Python 中替换非 ASCII 字符
【发布时间】:2011-02-24 16:41:04
【问题描述】:

我有一堆使用 Python 中的 HTTPLIB2 包下载的 HTML 文件。 ' ' 显示为 'Â'。

<font color="#ff0000">02/12/2004Â </font> is showing while <font color="#ff0000">02/12/2004&nbsp;</font> is the desired format.

如何在 Python 中将 'Â ' 替换为 '&amp;nbsp;'?非常感谢!

【问题讨论】:

  • 是的,它与原始 HTML 略有不同。我正在使用 httplib2 下载它们,而不是真正的浏览器。我必须在 httlib2 的标题中包含一些内容才能按原样下载页面吗?

标签: python non-ascii-characters replace


【解决方案1】:

您遇到了编码问题。不要尝试删除这些字符,而是查找页面的编码,然后在读取文件时,使用正确的字符编码使用codecs module 而不是open()

【讨论】:

    【解决方案2】:
    filtered_content = filter(lambda x: x in string.printable, content)
    

    这解决了我的问题。谢谢!

    【讨论】:

    • 这并没有解决您的问题,这删除了字符而不是用空格替换它们。
    【解决方案3】:
    s.replace('Â ', '&nbsp;');
    

    但是,虽然我没有使用 HTTPLIB2,但如果在下载 HTML 文件时更改了它们的源,我很确定会出现问题。可能存在解码问题。你使用的是什么版本的 Python?如果是 Python 3,内容将是字节序列,而不是字符串,因此您必须指定正确的代码页来将字节解码为。

    http://code.google.com/p/httplib2/wiki/ExamplesPython3

    编辑:如果您不仅限于使用 httplib2,也许您可​​以尝试使用作为 Python 2.6 标准库一部分的 urlliburllib2httplib 模块?

    【讨论】:

    • 不行.. 我收到以下错误:SyntaxError: Non-ASCII character '\xc3' in file I used content.replace('Â ', ' ') 在我的 python 程序中。 . 谢谢..
    • 由于您使用的是 Python 2 版本,因此您可能必须使用 unicode 字符串来保存 'Â'。我在 Python 3 出来几个月后才开始接触 Python,所以我主要有这方面的经验。
    猜你喜欢
    • 2017-04-13
    • 2013-06-20
    • 1970-01-01
    • 1970-01-01
    • 2016-04-06
    • 1970-01-01
    • 2015-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多