0

我以这种方式使用 Python Shell:

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

如何打印 s 变量以显示字符 Ã??? 这是第一个也是最简单的问题。真的,我从一个网页中获取内容,该网页包含非 ascii 字符(如前一个字符)和其他带有波浪号(如 á、é、í、ñ 等)的网页。此外,我正在尝试使用这些字符执行正则表达式针对网页内容的模式表达。

这个问题怎么解决??

这是一个正则表达式的示例:

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

如果我使用 Expresson 应用程序工作正常。

编辑[05/26/2009 16:38]:对不起,关于我的解释。我会尽力解释得更好。

我必须从页面中获取一些文本。我有该页面的网址,并且我有正则表达式来获取该文本。我首先想到的是正则表达式是错误的。我用 Expresso 检查了它并且工作正常,我得到了我想要的文本。所以,我想到的第二件事是打印页面的内容,那是当我看到内容不是我在网页源代码中看到的内容时。区别在于非 ascii 字符,如 á、é、í 等。现在,我不知道我必须做什么以及问题出在页面内容的编码中还是在正则表达式的模式文本中。我定义的正则表达式之一是前一个。

问题将是:使用正则表达式是否有任何问题,其中模式文本具有非 ascii 字符?

4

3 回答 3

2

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

>>> s = 'Ã'
>>> s
'\xc3'
>>> print s
Ã
于 2009-05-26T14:06:47.673 回答
2

假设您要将其打印为 utf-8。在python 3之前,最好是专门编码

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

如果您从外部获取文本,则必须专门 decode('utf-8) 例如

f = open(my_file)
a = f.next().decode('utf-8') # you have a unicode line in a
print a.encode('utf-8') 
于 2009-05-26T15:41:53.333 回答
1

我会用它ord()来找出一个字符是否是 ASCII/特殊字符:

if ord(c) > 127:
    # special character

这可能不适用于 UTF-8 等多字节编码。在这种情况下,我会在测试之前转换为 Unicode。

如果您从网页中获取特殊字符,您应该知道编码。然后对其进行解码,请参阅Unicode HOWTO

编辑:我绝对不确定这个问题是关于什么的......澄清它可能是个好主意。

于 2009-05-26T14:07:17.360 回答