पायथन में यूनिकोड चरित्र को कैसे प्रिंट करें?


115

मैं एक शब्दकोश बनाना चाहता हूं जहां अंग्रेजी शब्द रूसी और फ्रेंच अनुवादों की ओर इशारा करते हैं।

मैं पायथन में यूनिकोड वर्ण कैसे प्रिंट कर सकता हूं? इसके अलावा, आप एक चर में यूनिकोड वर्णों को कैसे संग्रहीत करते हैं?


क्या यह मदद करता है: docs.python.org/howto/unicode.html
paulsm4

यहाँ एक नज़र हैuअजगर के साथ अपने तार को उपसर्ग करना, उन्हें यूनिकोड स्ट्रिंग शाब्दिक के रूप में विचार करने की अनुमति देता है।
एसआरआई

जवाबों:


109

अपने पायथन स्रोत कोड में यूनिकोड वर्णों को शामिल करने के लिए, आप यूनिकोड से बचने के पात्रों का उपयोग \u0123अपनी स्ट्रिंग में फार्म में कर सकते हैं, और 'यू' के साथ स्ट्रिंग शाब्दिक को उपसर्ग कर सकते हैं।

यहाँ पायथन इंटरेक्टिव कंसोल में एक उदाहरण चल रहा है:

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

इस तरह घोषित स्ट्रिंग्स यूनिकोड-प्रकार के चर हैं, जैसा कि पायथन यूनिकोड प्रलेखन में वर्णित है ।

यदि उपरोक्त कमांड चलाना आपके लिए सही ढंग से टेक्स्ट प्रदर्शित नहीं करता है, तो शायद आपका टर्मिनल यूनिकोड वर्ण प्रदर्शित करने में सक्षम नहीं है।

किसी फ़ाइल से यूनिकोड डेटा पढ़ने के बारे में जानकारी के लिए, यह उत्तर देखें:

पायथन में फ़ाइल से वर्ण पढ़ने


4
हाँ, आप अपना कोड यूनिकोड-एन्कोडेड पाठ फ़ाइलों में लिख सकते हैं , लेकिन बहुत सारे संपादकों और उपकरणों को उनसे निपटने में परेशानी होती है। विभिन्न प्लेटफार्मों पर बहुत सारे स्रोत कोड के साथ काम करने का मेरा अनुभव यह रहा है कि एएससीआईआई में स्रोत कोड रखना और यूनिकोड एस्केप का उपयोग करना सबसे अच्छा है।
मैट रयाल

3
@MattRyall, मैं सहमत हूं, लेकिन रूसी डेवलपर्स की एक टीम रूसी में टिप्पणी और डॉकस्ट्रिंग लिखना चाह सकती है। एक भाषा परियोजना के लिए यह एक अच्छा विकल्प है।
जोहान लुंडबर्ग

3
हालांकि ध्यान दें कि यह केवल तभी काम करता है जब आप सिर्फ स्ट्रिंग प्रिंट करते हैं। यदि यह किसी अन्य वस्तु में लिपटा हुआ है तो आपको बच के कोड दिखाई देंगे। उदाहरण के लिए "[u '\ u0420 \ u043e \ u0441 \ u0441 \ u0438 \ u044f'] आज़माएं।
बस्टबस

3
क्या होगा अगर मैं इसे एक स्ट्रिंग में संग्रहीत करता हूं mystr? फिर इसे कैसे प्रिंट करें?
cccn1991

1
@CarloWood शीर्ष उत्तर आपको वही बताता है जो आप चाहते हैं। सिर्फprint your_unicode_characters.encode('utf-8')
युओ झांग 1

48

पायथन में एक यूनिकोड वर्ण प्रिंट करें:

अजगर दुभाषिया से सीधे एक यूनिकोड वर्ण प्रिंट करें:

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

यूनिकोड चरित्र u'\u2713'एक चेकमार्क है। दुभाषिया स्क्रीन पर चेकमार्क प्रिंट करता है।

एक अजगर स्क्रिप्ट से एक यूनिकोड वर्ण प्रिंट करें:

इसे test.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()यूनिकोड की कोशिश कर रहे हैं , और एएससीआई कोडेक त्रुटियों को प्राप्त कर रहे हैं , तो इस पृष्ठ की जांच करें , जिसमें से टीएलडीआर export PYTHONIOENCODING=UTF-8अजगर को फायरिंग करने से पहले करता है (यह चर नियंत्रित करता है कि बाइट्स के किस क्रम में कंसोल आपके स्ट्रिंग डेटा को एन्कोड करने की कोशिश करता है)। आंतरिक रूप से, Python3 UTF-8 का उपयोग डिफ़ॉल्ट रूप से करता है ( यूनिकोड HOWTO देखें)) तो यह समस्या नहीं है; आप बस यूनिकोड को तार में रख सकते हैं, जैसा कि अन्य उत्तरों और टिप्पणियों में देखा गया है। जब आप कोशिश करते हैं और इस डेटा को अपने कंसोल से निकालते हैं कि समस्या होती है। अजगर को लगता है कि आपका सांत्वना केवल आस्की को संभाल सकता है। कुछ अन्य उत्तर कहते हैं, "इसे किसी फ़ाइल में लिखें, पहले" लेकिन ध्यान दें कि वे ऐसा करने के लिए एन्कोडिंग (UTF-8) निर्दिष्ट करते हैं (इसलिए, पायथन लिखित रूप में कुछ भी नहीं बदलता है), और फिर पढ़ने के लिए एक विधि का उपयोग करें फ़ाइल जो सिर्फ एन्कोडिंग के लिए किसी भी संबंध के बिना बाइट्स को थूक देती है, यही कारण है कि काम करता है।


धन्यवाद! फ़ाइल पर परिणाम लिखने के लिए asciitree पैकेज का उपयोग करते समय मुझे एक समस्या थी। इससे मेरे लिए हल हो गया।
पाल थिंगबो

बहुत बहुत धन्यवाद। घंटे बिताते हुए, खुशी हुई कि मुझे यह मिला।
चार्लीटेल्टा

17

अजगर 2 में, आप एक साथ यूनिकोड तार घोषित u, के रूप में u"猫"और उपयोग decode()और encode()करने के लिए और क्रमशः यूनिकोड से, अनुवाद करने के लिए।

यह पायथन 3 में काफी आसान है। यहां एक बहुत अच्छा अवलोकन पाया जा सकता है । उस प्रस्तुति ने मेरे लिए बहुत कुछ स्पष्ट किया।


1
वीडियो लिंक के लिए Thx। यह बहुत उपयोगी है।
अरुण

1
यह यहां एक गैर-वीडियो के रूप में भी उपलब्ध है: व्यावहारिक यूनिकोड, या, मैं दर्द को कैसे रोकूं? (Pycon2012) nedbatchelder.com/text/unipain.html
टॉम

7

यह देखते हुए कि यह पहला स्टैक ओवरफ्लो परिणाम है, जब Google इस विषय को खोज रहा है, यह उल्लेख करता है कि uयूनिकोड स्ट्रिंग्स के लिए प्रीफ़िक्सिंग पाइथन 3 में वैकल्पिक है। (पायथन 2 उदाहरण शीर्ष उत्तर से कॉपी किया गया था)

अजगर 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'

धन्यवाद! वास्तव में मैंने क्या खोजा था: एक असामान्य तरीके से एक स्ट्रिंग के अंदर एक यूनिकोड चरित्र को प्रिंट करने के लिए दोनों python2 और python3 के लिए।
जेनकाह

क्लैम्ड संस्करण को फाइटन 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' बन जाएगा और "\" और प्रिंट के साथ यूनिकोड कोड को प्रस्तुत करेगा । उदाहरण:

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

इसकी जाँच करें शायद यह अजगर यूनिकोड इमोजी की मदद करेगा

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.