2014-07-01 27 views
5

test etmek için:kullanın isinstance ben böyle bir şey yapmak nasıl Unicode dizesi

>>> s = u'hello' 
>>> isinstance(s,str) 
False 

Ama bu Unicode olarak kodlanmış dize için True dönmek isinstance istiyorum. Unicode dize nesne türü var mı?

+0

'tip (ler)' ... söyledik kolayca tip olurdu ama neden yazıyorsun? Gerçekten sadece 'unicode' nesnelerini mi arıyorsunuz yoksa string benzeri bir arayüzle mi? – geoffspear

cevap

9

Python2: Sen hem test etmek için basestring kullanabilirsiniz:

isinstance(unicode_or_bytestring, basestring) 

basestring Python 2'de kullanılabilir ve str ve unicode hem soyut taban türüdür.

isinstance(unicode_tring, unicode) 
0

Unicode dize nesne türü var mı:

sonra bu kadar açıkça yapmak, sadeceunicodetest etmek isteseydim?

Evet bu çalışır: Eğer unicode olduğunu biliyorsanız

>>> s = u'hello' 
>>> isinstance(s, unicode) 
True 
>>> 

Ancak bu sadece yararlıdır. Başka bir çözüm python2.x ve python3.x dönüşümleri sizi kurtarır ve yakalar six paketini kullanmaktır unicode ve str

>>> unicode_s = u'hello' 
>>> s = 'hello' 
>>> isinstance(unicode_s, str) 
False 
>>> isinstance(unicode_s, unicode) 
True 
>>> isinstance(s, str) 
True 
>>> isinstance(unicode_s, str) 
False 
>>> isinstance(s, six.string_types) 
True 
>>> isinstance(unicode_s, six.string_types) 
True