请有人请告诉我如何解决这个问题。
这有效:
nOrd = (ord(u'ط'))
但这失败了:
s="ط"
s=unicode(s, 'utf-8')
nOrd = (ord((s)))
我得到的错误是:
TypeError:ord()需要一个字符,但找到长度为2的字符串
答案 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'')