Bunu kullandım:
u = unicode(text, 'utf-8')
Ancak Python 3 ile hata alıyorum (veya ... belki bir şey eklemeyi unutmuşumdur):
NameError: global name 'unicode' is not defined
Teşekkür ederim.
Bunu kullandım:
u = unicode(text, 'utf-8')
Ancak Python 3 ile hata alıyorum (veya ... belki bir şey eklemeyi unutmuşumdur):
NameError: global name 'unicode' is not defined
Teşekkür ederim.
Yanıtlar:
Değişmez dizeler Python3'te varsayılan olarak unicode'dur.
Bunun text
bir bytes
nesne olduğunu varsayarsak , sadecetext.decode('utf-8')
unicode
of Python2, Python3 ile eşdeğerdir str
, dolayısıyla şunu da yazabilirsiniz:
str(text, 'utf-8')
Eğer tercih edersen.
str
unicode, yani. buna hiçbir mantıklı çağırmak için "deşifre" olan decode
Üzerinde
str(text, 'utf-8')
, metin bir string ikili olmalıdır. egstr(b'this is a binary', 'utf-8')
Python 3.0'daki yenilikler şunları söylüyor:
Tüm metin Unicode'dur; ancak kodlanmış Unicode, ikili veri olarak temsil edilir
Utf-8 çıktısını aldığınızdan emin olmak istiyorsanız, 3.0'da unicode ile ilgili bu sayfadan bir örnek :
b'\x80abc'.decode("utf-8", "strict")
Geçici çözüm olarak şunu kullanıyorum:
# Fix Python 2.x.
try:
UNICODE_EXISTS = bool(type(unicode))
except NameError:
unicode = lambda s: str(s)
try: unicode = str; except: pass
.
unicode = str
2 ya da 3'te başarısız olmayacağı için yapabileceğin gibi görünüyor
from six import u as unicode
da daha çok kendi kendini belgelendirdiği için tercih ederim (çünkü altı, 2/3 uyumluluk katmanıdır)unicode = str
Sorunumu, \ uFE0F, \ u000A vb. Karakterleri dönüştürmek için bu şekilde çözdüm ve ayrıca 16 bayt ile kodlanmış emojiler.
example = 'raw vegan chocolate cocoa pie w chocolate & vanilla cream\\uD83D\\uDE0D\\uD83D\\uDE0D\\u2764\\uFE0F Present Moment Caf\\u00E8 in St.Augustine\\u2764\\uFE0F\\u2764\\uFE0F '
import codecs
new_str = codecs.unicode_escape_decode(example)[0]
print(new_str)
>>> 'raw vegan chocolate cocoa pie w chocolate & vanilla cream\ud83d\ude0d\ud83d\ude0d❤️ Present Moment Cafè in St.Augustine❤️❤️ '
new_new_str = new_str.encode('utf-16', 'surrogatepass').decode('utf-16')
print(new_new_str)
>>> 'raw vegan chocolate cocoa pie w chocolate & vanilla cream😍😍❤️ Present Moment Cafè in St.Augustine❤️❤️ '
Yıllardır kullandığım bir Python 2 programında şu satır vardı:
ocd[i].namn=unicode(a[:b], 'utf-8')
Bu Python 3'te işe yaramadı.
Ancak, programın şunlarla çalıştığı ortaya çıktı:
ocd[i].namn=a[:b]
İlk başta neden oraya unicode koyduğumu hatırlamıyorum, ama sanırım adı İsveç harfleri åäöÅÄÖ içerebildiği için. Ancak "unicode" olmadan da çalışırlar.
python 3.x'in en kolay yolu
text = "hi , I'm text"
text.encode('utf-8')