मैंने इसका उपयोग किया:
u = unicode(text, 'utf-8')
लेकिन पायथन 3 के साथ त्रुटि हो रही है (या ... शायद मैं सिर्फ कुछ शामिल करना भूल गया):
NameError: global name 'unicode' is not defined
धन्यवाद।
मैंने इसका उपयोग किया:
u = unicode(text, 'utf-8')
लेकिन पायथन 3 के साथ त्रुटि हो रही है (या ... शायद मैं सिर्फ कुछ शामिल करना भूल गया):
NameError: global name 'unicode' is not defined
धन्यवाद।
जवाबों:
पायथन 3 में डिफ़ॉल्ट रूप से लिटरल स्ट्रिंग्स यूनिकोड हैं।
मान लेना कि textएक bytesवस्तु है, बस उपयोग करेंtext.decode('utf-8')
unicodePython2 Python3 के बराबर है str, इसलिए आप यह भी लिख सकते हैं:
str(text, 'utf-8')
आप चाहें तो।
strयूनिकोड है, अर्थात। यह "डिकोडेड" है, इसलिए इस decodeपर कॉल करने का कोई मतलब नहीं है
str(text, 'utf-8'), तो पाठ को एक स्ट्रिंग बाइनरी होना चाहिए। जैसेstr(b'this is a binary', 'utf-8')
सभी पाठ यूनिकोड है; हालांकि एन्कोडेड यूनिकोड को बाइनरी डेटा के रूप में दर्शाया गया है
यदि आप यह सुनिश्चित करना चाहते हैं कि आप utf-8 का उत्पादन कर रहे हैं, तो यहां इस पृष्ठ का एक उदाहरण 3.0 में यूनिकोड पर दिया गया है :
b'\x80abc'.decode("utf-8", "strict")
वर्कअराउंड के रूप में, मैं इसका उपयोग कर रहा हूं:
# 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 या 3 में विफल नहीं होगा
from six import u as unicodeजो मैं सिर्फ इसलिए पसंद करूंगा क्योंकि यह अधिक स्व-दस्तावेजीकरण है (चूंकि छह एक 2/3 संगतता परत है)unicode = str
यह कैसे मैंने \ uFE0F, \ u000A, आदि जैसे चार्ट को बदलने के लिए अपनी समस्या को हल किया और 16 बाइट्स के साथ एन्कोड किए गए इमोजी भी।
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❤️❤️ '
पायथन 2 कार्यक्रम में जिसका उपयोग मैंने कई वर्षों से किया था, यह पंक्ति थी:
ocd[i].namn=unicode(a[:b], 'utf-8')
यह पायथन 3 में काम नहीं किया।
हालांकि, कार्यक्रम के साथ काम करने के लिए निकला:
ocd[i].namn=a[:b]
मुझे याद नहीं है कि मैंने पहले स्थान पर यूनिकोड क्यों रखा था, लेकिन मुझे लगता है कि यह इसलिए था क्योंकि नाम में स्वीडिश पत्र शामिल हो सकते हैं। लेकिन यहां तक कि वे "यूनिकोड" के बिना काम करते हैं।