2016-11-19 9 views
0

誰かがこの問題を解決する方法を教えてください。Python。ユニコード+変数とu +定数の違いは?

これは動作します:

nOrd = (ord(u'ط')) 

しかし、これは失敗します。

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

私が手にエラーがある:

例外TypeError:ORD()は長さ2の文字が、文字列を期待見つけた

+0

'前ord''にそれを与えることにS'の内容は何ですか? 'ord'は一つの文字を期待しています。あなたは明らかに文字列を与えています。 – Carcigenicate

+0

コンテキスト? tweepyストリームからの単語の文字。 –

答えて

3

あなたの第2あなたは第二の例ではU+200E LEFT-TO-RIGHT MARK文字を持っている

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

:210は、単に最初の例と同じテキストではありません。それはと2つの文字になります。

str.lstrip()またはstr.replace()を使用して削除できます。最初は唯一のどこにでも文字列でから他の、最初からそれを削除します。

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

どうすれば左から右のマークを削除できますか? –

+1

@BenderRodriguez: 's.lstrip(u '\ u200e')'を使って変換後に削除することができます。 –

関連する問題