2013-02-04 66 views
17

तो एपीआई दस्तावेज़ पर, http://docs.python.org/2/library/unicodedata.html#unicodedata.normalize। इसमें कहा गया हैक्या कोई समझा सकता है कि कैसे unicodedata.normalize (फॉर्म, unistr) उदाहरण के साथ काम करते हैं?

यूनिकोड स्ट्रिंग unistr के लिए सामान्य रूप रूप लौटें। प्रपत्र के लिए मान्य मान 'एनएफसी', 'NFKC', 'NFD', और 'NFKD'.`

प्रलेखन बल्कि अस्पष्ट, किसी ने कुछ उदाहरण के साथ valid values समझा सकता है कर रहे हैं?

उत्तर

23

मैं प्रलेखन बहुत स्पष्ट लगता है, लेकिन यहां कुछ कोड उदाहरण:

from unicodedata import normalize 

print '%r' % normalize('NFD', u'\u00C7') # decompose: convert Ç to "C + ̧" 
print '%r' % normalize('NFC', u'C\u0327') # compose: convert "C + ̧" to Ç 

दोनों 'डी' (= विघटित) रूपों एक संयुक्त चरित्र (जैसे ä) दो अक्षरों में (a परिवर्तित + दो बिंदु)। दोनों 'सी' (= रचना) रूप विपरीत होते हैं।

संगतता उद्देश्यों के लिए यूनिकोड में जोड़े गए वर्णों को परिवर्तित करने के लिए दो "के" रूपों का उपयोग किया जाता है। उदाहरण के लिए, सॉफ़्टवेयर का समर्थन करने के लिए जो प्रतीकों के चारों ओर सर्किल नहीं खींच सकता है, वहां "चक्र संख्या" का एक सेट है, जैसे ① (यूनिकोड संख्या 2460)। जब हम यह करने के लिए विहित अपघटन (NFD) लागू होते हैं, यह कुछ भी नहीं करता है:

print '%r' % normalize('NFKD', u'\u2460') # 1 

:

print '%r' % normalize('NFD', u'\u2460')  # u'\u2460' 

हालांकि, संगतता अपघटन (NFKD) इसी 'उपयुक्त' चरित्र वापस आ जाएगी अधिक जानकारी के लिए http://en.wikipedia.org/wiki/Unicode_equivalence देखें।