इनपुट स्ट्रिंग के लिए यूनिकोड ग्लिफ़ नामों को कैसे प्रिंट करें?


12

मैं दौड़ना चाहूंगा

unicode-names 'abç'

और संबंधित यूनिकोड वर्ण नाम देखें:

LATIN SMALL LETTER A
LATIN SMALL LETTER B
LATIN SMALL LETTER C WITH CEDILLA

यूनिकोड ग्लिफ़ नामों की एक श्रृंखला के रूप में एक स्ट्रिंग को छापना कई मामलों में उपयोगी होगा:

  • भेद आसानी से "i" और "í" जैसे वर्णों को भ्रमित करता है।
  • बताएं कि वास्तव में एक शाब्दिक स्ट्रिंग में क्या है (उदाहरण के लिए गैर-मुद्रण योग्य या बिना-असाइन किए गए, शून्य-चौड़ाई वाले वर्ण)।

जवाबों:


14

Uniutils पैकेज कार्यक्रम है uniname

$ echo -n …—|uniname
character  byte       UTF-32   encoded as     glyph   name
    0          0  002026   E2 80 A6       …      HORIZONTAL ELLIPSIS
    1          3  002014   E2 80 94       —      EM DASH

1
केवल नामों के साथ न्यूनतम आउटपुट के लिए, इन विकल्पों का उपयोग करें:echo -n …— | uniname -bcegpu
l0b0

8

मुझे इससे जांचने का एक अच्छा तरीका नहीं पता है bash, लेकिन पायथन में एक अंतर्निहित यूनिकोड डेटाबेस है जिसे आप इस तरह से स्क्रिप्ट में उपयोग कर सकते हैं:

#!/usr/bin/env python
import sys, unicodedata
for ch in sys.stdin.read().decode('utf-8'):
  try:
    print unicodedata.name(ch)
  except ValueError:
    print 'codepoint ', ord(ch)

आप इस स्क्रिप्ट का उपयोग इस तरह कर सकते हैं (यह मानते हुए कि आप इसे कहते हैं unicode-names):

$ echo 'abc©áοπρσ' | unicode-names
LATIN SMALL LETTER A
LATIN SMALL LETTER B
LATIN SMALL LETTER C
COPYRIGHT SIGN
LATIN SMALL LETTER A WITH ACUTE
GREEK SMALL LETTER OMICRON
GREEK SMALL LETTER PI
GREEK SMALL LETTER RHO
GREEK SMALL LETTER SIGMA
codepoint 10

डेटाबेस ValueErrorकिसी भी वर्ण के बारे में नहीं जानता है, इसके लिए एक अपवाद फेंकता है , इसलिए हम उनके कोडपॉइंट को दशमलव में प्रिंट करते हैं (ये अमिट वर्ण हैं, आमतौर पर)।

कैविएट: स्क्रिप्ट मानती है कि आपका टर्मिनल UTF-8 एनकोडेड है। यदि ऐसा नहीं है, तो आपको decode()विधि का तर्क बदलना चाहिए । अजगर एन्कोडिंग के एक बहुत विस्तृत चयन का समर्थन करता है, आपका निश्चित रूप से वहां होगा।


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