代码之家  ›  专栏  ›  技术社区  ›  jaloplo

如何在Python中显示非ASCII字符?

  •  0
  • jaloplo  · 技术社区  · 17 年前

    我用这种方式使用python shell:

    >>> s = 'Ã'
    >>> s
    '\xc3'
    

    如何打印s变量以显示字符_????这是第一个也是最简单的问题。实际上,我正在从一个具有非ASCII字符的网页获取内容,如前一个和其他具有tilde的字符,如_、_)、_…、_等。此外,我正在尝试在模式表达式中使用这些字符执行一个regex,以对抗网页的内容。

    如何解决这个问题??

    这是一个regex示例:

    u'<td[^>]*>\s*Definición\s*</td><td class="value"[^>]*>\s*(?P<data>[\w ,-:\.\(\)]+)\s*</td>'
    

    如果我使用Expression应用程序,效果会很好。

    编辑[05/26/2009 16:38]: 对不起,关于我的解释。我会尽量解释清楚的。

    我得从一页纸上取些文本。我有那个页面的URL,我有regex来获取那个文本。我认为第一件事是雷吉克斯错了。我用expresso检查过,工作正常,我得到了我想要的文本。所以,我认为第二件事是打印页面的内容,当我看到内容不是我在网页源代码中看到的内容时。区别在于非ASCII字符,如_、_、_……等等。现在,我不知道该怎么做,也不知道问题是页面内容的编码还是regex的模式文本。我定义的正则表达式之一是前一个。

    问题是:使用regex有什么问题吗?哪个模式文本有非ASCII字符????

    3 回复  |  直到 17 年前
        1
  •  2
  •   odwl    17 年前

    假设您想将其打印为UTF-8。在python 3之前,最好是专门对其进行编码

    print u'Ã'.encode('utf-8')
    

    如果从外部获取文本,则必须专门解码(‘utf-8),例如

    f = open(my_file)
    a = f.next().decode('utf-8') # you have a unicode line in a
    print a.encode('utf-8') 
    
        2
  •  2
  •   Jason Coon    17 年前

    如何打印s变量以显示字符_????
    使用 print :

    >>> s = 'Ã'
    >>> s
    '\xc3'
    >>> print s
    Ã
    
        3
  •  1
  •   Bastien Léonard    17 年前

    我会用 ord() 要查明字符是否为ASCII/特殊字符:

    if ord(c) > 127:
        # special character
    

    这可能不适用于多字节编码,如UTF-8。在本例中,我将在测试前转换为Unicode。

    如果你从网页上得到特殊字符,你应该知道编码。然后解码,看 Unicode HOWTO .

    编辑:我肯定不知道这个问题是关于什么的……澄清一下可能是个好主意。

    推荐文章