2015-07-08 24 views
5

Başvurulan bir dize değişkenine 'u' ekleyebilmek istiyorum. Bunu yapmak zorundayım çünkü bir for döngüsündeyken, string'e sadece bir değişken ismi ile erişebiliyorum.Bir dizeden önce unicode karakteri nasıl eklenir? [Python]

Bunu yapmanın bir yolu var mı?

>>> word = 'blahblah' 
>>> list = ['blahblah', 'boy', 'cool'] 
>>> import marisa_trie 
>>> trie = marisa_trie.Trie(list) 
>>> word in trie 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: Argument 'key' has incorrect type (expected unicode, got str) 
>>> 'blahblah' in trie 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: Argument 'key' has incorrect type (expected unicode, got str) 
>>> u'blahblah' in trie 
True 
>>> u"blahblah" in trie 
True 
>>> u(word) in trie 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
NameError: name 'u' is not defined 
>>> uword in trie 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
NameError: name 'uword' is not defined 
>>> u+word in trie 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
NameError: name 'u' is not defined 
>>> word.u in trie 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
AttributeError: 'str' object has no attribute 'u' 

cevap

8

Sen deşifre olabilir

unicode(word,encoding="utf-8")) 

Ya str.format hazır bilgi için. Varolan bir dizeyi unicode object'a dönüştürmek için unicode() constructor'u kullanın.

+0

Unicode işlevi çalışır! Teşekkürler – Tai

2

unicode(your_string) yalnızca ihtiyacınız olanı yapar, inanıyorum.

for word in lst: 
    print(type(u"{}".format(word))) 
0

u önek yalnızca kullanılabilir:

lst = ['blahblah', 'boy', 'cool'] 

for word in lst: 
    print(type(word.decode("utf-8"))) 

Ya unicode işlevini kullanın:

>>> unicode("Hello world"!) 
u"Hello world!" 
>>> print (unicode("Hello world"!)) 
"Hello world!" 
1

Evet, format() çalışacak, ancak bazen olmayacak. Python'un eski versiyonları bile buna sahip değil. Ben tavsiye: Eğer unicode() fonksiyonunu kullanmak beğenmezseniz unicode.format() olarak aynı şeyi yapacağız

utext = u"%s" % text 

. Ama belli ki, sen yaparsın. : D

İlgili konular