2016-11-19 91 views
0

有人可以請告訴我如何解決這個問題。Python。 unicode +變量和u +常量之間的區別?

這工作:

nOrd = (ord(u'ط')) 

但這種失敗:

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

我得到的錯誤是:

類型錯誤:ORD()預計長度爲2的字符,但字符串找到

+0

是什麼內容's'給它'ord'之前? 'ord'需要一個字符,你顯然給它一串字符。 – Carcigenicate

+0

的背景?它來自tweepy流的單詞。 –

回答

3

第二個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'') 
+0

我該如何刪除從左到右的標記? –

+1

@BenderRodriguez:你可以在用's.lstrip(u'\ u200e')'轉換後刪除它。 –

相關問題