蟒蛇。 unicode + variable和u + constant之间的区别?

时间:2016-11-19 14:29:20

标签: python unicode

请有人请告诉我如何解决这个问题。

这有效:

    nOrd = (ord(u'ط'))

但这失败了:

s="‎ط"   
s=unicode(s, 'utf-8')
nOrd = (ord((s)))

我得到的错误是:

TypeError:ord()需要一个字符,但找到长度为2的字符串

1 个答案:

答案 0 :(得分:4)

你的第二个s只是与第一个例子不同的文字

>>> u'ط'
u'\u0637'
>>> u'ط'.encode('utf8')
'\xd8\xb7'
>>> s="‎ط"
>>> s
'\xe2\x80\x8e\xd8\xb7'
>>> s.decode('utf8')
u'\u200e\u0637'

第二个示例中有U+200E LEFT-TO-RIGHT MARK个字符。这使得两个字符,而不是一个。

您可以使用str.lstrip()或使用str.replace()进行删除来删除它;第一个只从头开始删除它,另一个从到处中删除

s = s.lstrip(u'\u200e')
# or
s = s.replace(u'\u200e', u'')