পাইথন 3 দিয়ে কীভাবে ইউনিকোড স্ট্রিং তৈরি করতে হয়


101

আমি এটি ব্যবহার করেছি:

u = unicode(text, 'utf-8')

তবে পাইথন 3 (বা ... সম্ভবত আমি কিছু অন্তর্ভুক্ত করতে ভুলে গেছি) এর সাথে ত্রুটি পেয়েছি:

NameError: global name 'unicode' is not defined

ধন্যবাদ.


17
পাইথন 3 এ আপগ্রেড করার কোনও দুর্দান্ত কারণ থাকলে তা ডিফল্টরূপে ইউনিকোড।
জেবার্নার্ডো

উত্তর:


140

আক্ষরিক স্ট্রিংগুলি পাইথন 3-এ ডিফল্টরূপে ইউনিকোড।

ধরে নিলাম যে textএটি একটি bytesঅবজেক্ট, কেবল ব্যবহার করুনtext.decode('utf-8')

unicodestrপাইথন 2 এর পাইথন 3 এর সমতুল্য , তাই আপনি আরও লিখতে পারেন:

str(text, 'utf-8')

যদি তুমি বল.



10
@ গ্যাঙ্ক, পাইথন 3 strএ ইউনিকোড, অর্থাৎ। এটা তাই এটি কোন জ্ঞান করে তোলে ডাকতে "সঙ্কেতমুক্ত" হয় decodeএটা
জন লা রয়

একই প্রকারের ত্রুটি। দয়া করে কেবল str (txt), বা নীচে @ ম্যাজিক্রেস জন্মের কোডটি দিয়ে প্রতিস্থাপন করুন
সাইমন

4
আসল নমুনাটি পরিষ্কার নয়। পাইথন 3 এ, আপনি যদি করতে চান তবে str(text, 'utf-8')পাঠ্যটি অবশ্যই স্ট্রিং বাইনারি হতে হবে। উদাহরণস্বরূপstr(b'this is a binary', 'utf-8')

10

পাইথন 3.0 এ নতুন কী বলেছে:

সমস্ত পাঠ্য ইউনিকোড; তবে এনকোডযুক্ত ইউনিকোড বাইনারি ডেটা হিসাবে উপস্থাপিত হয়

আপনি যদি নিশ্চিত করতে চান যে আপনি utf-8 আউটপুট করছেন, এখানে ইউনিকোডে 3.0 থেকে এই পৃষ্ঠাটি থেকে একটি উদাহরণ দেওয়া হয়েছে :

b'\x80abc'.decode("utf-8", "strict")

4
পাইথন 2-তে '80 x80abc'.decode ("utf-8", "কঠোর") জন্য আমাদের ঠিক এটি দরকার, ধন্যবাদ
ওয়ার্কপ্লেফ্লাইসাইকেল

9

কার্যতঃ হিসাবে, আমি এটি ব্যবহার করে যাচ্ছি:

# Fix Python 2.x.
try:
    UNICODE_EXISTS = bool(type(unicode))
except NameError:
    unicode = lambda s: str(s)

12
আপনি কেন ল্যাম্বডা ফাংশন ব্যবহার করছেন? এই পদ্ধতিগুলি যে কোনও ক্ষেত্রে একইভাবে বলা হয়। এই সহজ প্রকরণ হল: try: unicode = str; except: pass
নিকোলাস বুলিয়ান

4
দেখে মনে হচ্ছে আপনি ঠিক করতে পারেন unicode = strযেহেতু এটি 2 বা 3 এ ব্যর্থ হবে না
নিকোলাই

বা from six import u as unicodeযা আমি কেবল পছন্দ করি কারণ এটি বেশি স্ব-ডকুমেন্টিং (যেহেতু ছয়টি 2/3 সামঞ্জস্যতার স্তর)unicode = str
নিকোলাই

3

এইভাবে আমি problem 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❤️❤️ '

0

পাইথন 2 প্রোগ্রামে আমি বহু বছর ধরে এটি ব্যবহার করেছিলাম:

ocd[i].namn=unicode(a[:b], 'utf-8')

পাইথন 3 এ এটি কাজ করেনি।

তবে, প্রোগ্রামটি কাজ করে উঠল:

ocd[i].namn=a[:b]

আমি কেন সেখানে ইউনিকোড প্রথম স্থানে রেখেছিলাম তা মনে নেই তবে আমি মনে করি এটি হ'ল কারণ নামটিতে সুইডিশ অক্ষর থাকতে পারে åäöÅÄÖ åäöÅÄÖ এমনকি তারা "ইউনিকোড" ছাড়াই কাজ করে।


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.