পাইথনে ইউনিকোড চরিত্রটি কীভাবে প্রিন্ট করা যায়?


115

আমি একটি অভিধান তৈরি করতে চাই যেখানে ইংরেজি শব্দগুলি রাশিয়ান এবং ফরাসি অনুবাদগুলিতে নির্দেশ করে।

পাইথনে আমি কীভাবে ইউনিকোড অক্ষরগুলি মুদ্রণ করব? এছাড়াও, আপনি কীভাবে একটি চলকটিতে ইউনিকোড অক্ষর সংরক্ষণ করবেন?


এটি কী সহায়তা করে: ডকস.পিথন.আর.
ইউনিকোড

এখানে দেখুন । আপনার স্ট্রিংগুলির সাথে উপসর্গ তৈরি করা পাইথনকে uএটিকে ইউনিকোড স্ট্রিং লিটারাল হিসাবে বিবেচনা করতে দেয়।
এসআরআই

উত্তর:


109

আপনার পাইথন উত্স কোডে ইউনিকোড অক্ষরগুলি অন্তর্ভুক্ত করার জন্য, আপনি স্ট্রিংয়ে ফর্মের মধ্যে ইউনিকোড পালাবার অক্ষরগুলি ব্যবহার করতে পারেন \u0123এবং 'ইউ' দিয়ে স্ট্রিংটিকে আধ্যাত্মিক উপসর্গ করতে পারেন।

পাইথন ইন্টারেক্টিভ কনসোলে চলছে এমন একটি উদাহরণ:

>>> print u'\u0420\u043e\u0441\u0441\u0438\u044f'
Россия

পাইথন ইউনিকোড ডকুমেন্টেশনে বর্ণিত স্ট্রিংগুলি হ'ল ইউনিকোড-ধরণের ভেরিয়েবল ।

যদি উপরের কমান্ডটি চালানো আপনার পক্ষে টেক্সটটি সঠিকভাবে প্রদর্শন না করে, আপনার টার্মিনালটি ইউনিকোড অক্ষর প্রদর্শন করতে সক্ষম নয়।

কোনও ফাইল থেকে ইউনিকোড ডেটা পড়ার তথ্যের জন্য, এই উত্তরটি দেখুন:

পাইথনে ফাইল থেকে অক্ষর পাঠ


4
হ্যাঁ, আপনি ইউনিকোড-এনকোডযুক্ত পাঠ্য ফাইলগুলিতে আপনার কোডটি লিখতে পারেন , তবে প্রচুর সম্পাদক এবং সরঞ্জামগুলির সাথে সেগুলি মোকাবেলায় সমস্যা হয়। বিভিন্ন প্ল্যাটফর্মে প্রচুর উত্স কোডের সাথে কাজ করার আমার অভিজ্ঞতাটি হ'ল ASCII এ সোর্স কোড রাখা এবং ইউনিকোড পলায়ন ব্যবহার করা ভাল।
ম্যাট রিয়াল 13'12

3
@ ম্যাটরাইল, আমি সম্মত, তবে রাশিয়ান বিকাশকারীদের একটি দল রাশিয়ান ভাষায় মন্তব্য এবং ডক্টাস্টিং লিখতে চাইতে পারে। একটি ভাষা প্রকল্পের জন্য এটি একটি ভাল বিকল্প।
জোহান লন্ডবার্গ

3
যদিও মনে রাখবেন যে আপনি কেবল স্ট্রিং প্রিন্ট করলে এটি কেবল কাজ করে। যদি এটি অন্য কোনও বস্তুতে আবৃত থাকে তবে আপনি পালানোর কোডগুলি দেখতে পাবেন। উদাহরণস্বরূপ "মুদ্রণ করুন [u '\ u0420 \ u043e \ u0441 \ u0441 \ u0438 \ u044f']" চেষ্টা করুন।
বিটিউবস ২

3
আমি যদি এটি একটি স্ট্রিং মধ্যে সংরক্ষণ করি mystr? তাহলে কীভাবে এটি প্রিন্ট করবেন?
cqcn1991

1
@ কার্লোওউড শীর্ষের উত্তরটি আপনাকে যা চাইবে তা বলে দেয়। ঠিকprint your_unicode_characters.encode('utf-8')
ইউহাও জাং

48

পাইথনে একটি ইউনিকোড অক্ষর মুদ্রণ করুন:

পাইথন ইন্টারপ্রেটার থেকে সরাসরি একটি ইউনিকোড অক্ষর মুদ্রণ করুন:

el@apollo:~$ python
Python 2.7.3
>>> print u'\u2713'

ইউনিকোড অক্ষর u'\u2713'একটি চেকমার্ক। দোভাষী স্ক্রিনে চেকমার্ক মুদ্রণ করে।

পাইথন স্ক্রিপ্ট থেকে একটি ইউনিকোড অক্ষর মুদ্রণ করুন:

এটিকে পরীক্ষা করুন py

#!/usr/bin/python
print("here is your checkmark: " + u'\u2713');

এটি এইভাবে চালান:

el@apollo:~$ python test.py
here is your checkmark: 

যদি এটি আপনার জন্য কোনও চেকমার্ক না দেখায় তবে সমস্যাটি অন্য কোথাও যেমন টার্মিনাল সেটিংস বা স্ট্রিম পুনঃনির্দেশের সাহায্যে আপনি করছেন এমন কিছু হতে পারে।

একটি ফাইলে ইউনিকোড অক্ষর সংরক্ষণ করুন:

এটি ফাইলটিতে সংরক্ষণ করুন: foo.py:

#!/usr/bin/python -tt
# -*- coding: utf-8 -*-
import codecs
import sys 
UTF8Writer = codecs.getwriter('utf8')
sys.stdout = UTF8Writer(sys.stdout)
print(u'e with obfuscation: é')

এটি চালান এবং ফাইলের পাইপ আউটপুট:

python foo.py > tmp.txt

Tmp.txt খুলুন এবং ভিতরে দেখুন, আপনি এটি দেখতে পাবেন:

el@apollo:~$ cat tmp.txt 
e with obfuscation: é

সুতরাং আপনি ইউনিকোড ই সংরক্ষণ করেছেন এবং একটি ফাইলের মধ্যে একটি বিস্মৃত চিহ্ন দিয়ে।


@ ofer. Sheffer উদ্ভটভাবে আমি এখানে বিপরীত সমস্যা সমাধানের জন্য খুঁজছি, পয়েন্টটি এটি কিছুটা ম্লান হতে পারে।
ক্রিস এইচ

40

আপনি করার চেষ্টা করছেন তবে print()ইউনিকোড এবং ASCII কোডেক ত্রুটি পাচ্ছেন , খুঁজে বার করো এই পৃষ্ঠার , TLDR যার করি export PYTHONIOENCODING=UTF-8পাইথন (এই পরিবর্তনশীল নিয়ন্ত্রণ হিসাবে আপনার স্ট্রিং ডেটা সঙ্কেতাক্ষরে লিখা কনসোল চেষ্টা বাইটের অনুক্রম) আপ অগ্নিসংযোগ আগে। অভ্যন্তরীণভাবে পাইথন 3 ইউটিএফ -8 ডিফল্টরূপে ব্যবহার করে ( ইউনিকোড হাওটো দেখুন) তাই সমস্যা না; অন্যান্য উত্তর এবং মন্তব্যগুলিতে দেখা যায়, আপনি কেবল স্ট্রিংগুলিতে ইউনিকোড রাখতে পারেন। আপনি যখন চেষ্টা করেন এবং আপনার কনসোলটিতে এই ডেটাটি বের করেন তখন সমস্যাটি ঘটে। পাইথন মনে করে যে আপনার কনসোলটি কেবল এসসিআই পরিচালনা করতে পারে। অন্যান্য উত্তরগুলির মধ্যে কিছু বলে, "প্রথমে এটি একটি ফাইলে লিখুন" তবে নোট করুন যে তারা এনকোডিং (ইউটিএফ -8) নির্দিষ্ট করার জন্য নির্দিষ্ট করে (সুতরাং, পাইথন লিখিতভাবে কিছু পরিবর্তন করে না), এবং তারপরে পড়ার জন্য একটি পদ্ধতি ব্যবহার করুন যে ফাইলটি কেবলমাত্র এনকোডিংয়ের জন্য কোনও প্রকার ছাড়াই বাইটসকে আলাদা করে দেয়, সে কারণেই এটি কাজ করে।


ধন্যবাদ! ফাইলে ফলাফল লেখার জন্য এসিস্ট্রি প্যাকেজটি ব্যবহার করার সময় আমার একটি ইউনিট সমস্যা ছিল। এটি আমার জন্য এটি সমাধান করেছে।
পল থিংব

তোমাকে অনেক ধন্যবাদ. বেশ কয়েক ঘন্টা গুগল করে কাটিয়েছি, খুশী হয়ে আমি এটি পেয়েছি।
চার্লিডেলটা

17

পাইথন 2 এ আপনি ইউনিকোড স্ট্রিংগুলি এ uহিসাবে u"猫"ব্যবহার করে decode()এবং encode()ইউনিকোডে এবং অনুবাদ করতে যথাক্রমে ইউনিকোড স্ট্রিং ঘোষণা করেন।

পাইথন 3 এ এটি খানিকটা সহজ। একটি খুব ভাল ওভারভিউ এখানে পাওয়া যাবে । এই উপস্থাপনাটি আমার জন্য অনেক কিছুই স্পষ্ট করে দিয়েছে।


1
ভিডিও লিঙ্কের জন্য Thx। এটা খুবই কাজের.
অরুণ

1
এটি এখানে একটি নন-ভিডিও হিসাবেও পাওয়া যায়: প্র্যাকমেটিক ইউনিকোড, বা, আমি কীভাবে ব্যথা থামাতে পারি? (পাইকন ২০১২) নেডব্যাচেল্ডার.com
টম

7

গুগল এই বিষয় অনুসন্ধান করার সময় এটি প্রথম স্ট্যাক ওভারফ্লো ফলাফল বলে বিবেচনা করে এটি উল্লেখ করা যায় যে uইউনিকোড স্ট্রিংগুলির উপসীকরণ পাইথন ৩-এ alচ্ছিক ((পাইথন ২ উদাহরণ শীর্ষের উত্তর থেকে অনুলিপি করা হয়েছিল)

পাইথন 3 (উভয় কাজ):

print('\u0420\u043e\u0441\u0441\u0438\u044f')
print(u'\u0420\u043e\u0441\u0441\u0438\u044f')

পাইথন 2:

print u'\u0420\u043e\u0441\u0441\u0438\u044f'

ধন্যবাদ! ঠিক আমি যা সন্ধান করেছি: পাইথন 2 এবং পাইথন 3 উভয়ের জন্য একটি স্ট্রিংয়ের মধ্যে একটি ইউনিকোড অক্ষর মুদ্রণের একটি সর্বজনীন উপায়।
জেনিয়াখ

ক্ল্যাম্পড সংস্করণটি ফাইটন 2 এও কাজ করা উচিত - ক্ল্যাম্পগুলি একটি বিকল্প এবং সুতরাং মঞ্জুরিপ্রাপ্ত।
আলেকজান্ডার স্টোহর

4

আমি উইন্ডোজে পোর্টেবল উইনপাইথন ব্যবহার করি, এতে আইপিথন কিউটি কনসোল অন্তর্ভুক্ত রয়েছে, আমি নিম্নলিখিতগুলি অর্জন করতে পারি।

>>>print ("結婚")
結婚

>>>print ("おはよう")
おはよう

>>>str = "結婚"


>>>print (str)
結婚

ইউনিকোড অক্ষরগুলি প্রদর্শনের জন্য আপনার কনসোল দোভাষীকে ইউনিকোড সমর্থন করা উচিত।


3

আরও একটি জিনিস যা এখনও যোগ করা হয়নি

পাইথন 2-এ, আপনি যদি ইউনিকোড এবং ব্যবহারযোগ্য একটি ভেরিয়েবল মুদ্রণ করতে চান .format(), তবে এটি করুন (বেস স্ট্রিংটি যেটি ইউনিকোড স্ট্রিং ফর্ম্যাট করা হচ্ছে তা দিয়ে u'':

>>> text = "Université de Montréal"
>>> print(u"This is unicode: {}".format(text))
>>> This is unicode: Université de Montréal

3

এটি পাইথনে UTF-8 মুদ্রণ স্থির করে:

UTF8Writer = codecs.getwriter('utf8')
sys.stdout = UTF8Writer(sys.stdout)

1

'+' কে '000' দিয়ে প্রতিস্থাপন করুন । উদাহরণস্বরূপ, 'U + 1F600' 'U0001F600' হয়ে উঠবে এবং ইউনিকোড কোডটি " with " দিয়ে প্রিন্ট করুন এবং মুদ্রণ করুন। উদাহরণ:

>>> print("Learning : ", "\U0001F40D")
Learning :  🐍
>>> 

এটি পরীক্ষা করে দেখুন এটি পাইথন ইউনিকোড ইমোজিটিকে সহায়তা করবে

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