有人可以請告訴我如何解決這個問題。Python。 unicode +變量和u +常量之間的區別?
這工作:
nOrd = (ord(u'ط'))
但這種失敗:
s="ط"
s=unicode(s, 'utf-8')
nOrd = (ord((s)))
我得到的錯誤是:
類型錯誤:ORD()預計長度爲2的字符,但字符串找到
有人可以請告訴我如何解決這個問題。Python。 unicode +變量和u +常量之間的區別?
這工作:
nOrd = (ord(u'ط'))
但這種失敗:
s="ط"
s=unicode(s, 'utf-8')
nOrd = (ord((s)))
我得到的錯誤是:
類型錯誤:ORD()預計長度爲2的字符,但字符串找到
第二個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'')
我該如何刪除從左到右的標記? –
@BenderRodriguez:你可以在用's.lstrip(u'\ u200e')'轉換後刪除它。 –
是什麼內容's'給它'ord'之前? 'ord'需要一個字符,你顯然給它一串字符。 – Carcigenicate
的背景?它來自tweepy流的單詞。 –