2012-12-19 16 views
8

देखो करने के लिए:पायथन यूनिकोड सामान्य: यह सही यू अनुवाद करने के लिए है ' xb4' यू ' u0301' निम्नलिखित स्निपेट में

>>> import unicodedata 
>>> from unicodedata import normalize, name 

>>> normalize('NFKD', u'\xb4') 
u' \u0301' 

>>> normalize('NFKD', u'a\xb4a') 
u'a \u0301a' 

>>> normalize('NFKC', u'a\xb4a') 
u'a \u0301a' 

>>> name(u'\xb4'), name(u'\u0301') 
('ACUTE ACCENT', 'COMBINING ACUTE ACCENT') 

मुझे यह समझाया गया है, तो व्यवहार u' \u0301' है u'\xb4' अनुवाद करने के लिए कोशिश कर रहा हूँ सही बात। यह एक अंतरिक्ष के साथ संयोजन तीव्र उच्चारण पैड क्यों करता है? यह आपको \xb4 का अनुवाद क्यों करता है?

fileformat पर हम देखते हैं कि ACUTE ACCENT को SPACING ACUTE कहा जाता था। मैंने सोचा, इसका मतलब यह था कि कर्सर को निम्नलिखित वर्णों को टाइप करने के लिए आगे बढ़ने की बजाय स्थानांतरित करना चाहिए।

यूपीडी: यदि कोई दिलचस्पी लेता है, तो यहां एक सूची है यदि यूनिकोड वर्ण हैं कि एनएफकेसी सामान्यीकरण के बाद एक जगह है शुरुआत: http://pastebin.com/Z99r5AK9

उत्तर

11

एक उच्चारण के चरित्र यूनिकोड मानक में निर्दिष्ट है, एक अंतरिक्ष के संयोजन और एक संयोजन लहजे चरित्र है:

>>> import unicodedata 
>>> unicodedata.decomposition(u'\xb4') 
'<compat> 0020 0301' 

\u00B4 चरित्र एक कुछ हद तक अस्पष्ट इतिहास रहा है, लेकिन यूनिकोड मानक ने इसे व्हाइटस्पेस के रूप में पेश करने का फैसला किया है + उच्चारण, भले ही इसमें अक्सर को केवल एक डायक्रिटिक चिह्न के रूप में उपयोग किया गया था, this discussion देखें।

आप शायद एक विकल्प के रूप में \u02CA का उपयोग कर सकते हैं; इसे व्हाइटस्पेस के रूप में नहीं माना जाता है, और इसमें कोई अपघटन नहीं होता है। यह बजाय एक पत्र के रूप में योग्य है, इसलिए आपका लाभ भिन्न हो सकता है।

+0

बहुत रोचक, धन्यवाद! – newtover

+0

यू +00 बी 4 ACUTE ACCENT और यू + 02 सीए मोडिफ़ीटर लेटर एक्यूट अकाउंट अलग-अलग वर्ण हैं और उन्हें "इसे प्रस्तुत करने" की अपेक्षा नहीं की जानी चाहिए। पूर्व फोंट में अक्सर अधिक उपस्थित होता है। जब दोनों मौजूद होते हैं, तो वे आम तौर पर समान दिखते हैं, या वही होते हैं, लेकिन उनके पास यूनिकोड मानक (उदा। सामान्य श्रेणी प्रतीक, संशोधक बनाम पत्र, संशोधक) में परिभाषित विभिन्न गुण होते हैं। और, उदाहरण के लिए, डोलोस एसआईएल फ़ॉन्ट में, उनके ग्लिफ स्पष्ट रूप से समान हैं लेकिन अग्रिम चौड़ाई अलग हैं; और मिंगिलू में, ढलान बहुत अलग हैं। –

+0

@ जुक्काका। कोर्पेला: मैं सही खड़ा हूं; मैंने संदर्भ को गलत समझा होगा, मैं उस भाग को हटा दूंगा। –

4

Unicode Collation Algorithm दस्तावेज़ पर एक नज़र डालें। विशेष रूप से, ध्यान दें कि

संगतता सामान्य (NFKC) परतों स्टैंड-अलोन अंतरिक्ष के संयोजन लहजे + की एक संयोजन के लहजे।

+0

मुझे बेहतर खोजना चाहिए था, धन्यवाद! – newtover

3

NFKD में, उच्चारण वर्ण एक "विभाजन" रास्ते में जमा हो जाती है: पहला वर्ण उच्चारण किए जाने और उसके बाद के संयोजन उच्चारण: u' \u0301'

NFKC में, उच्चारण वर्ण एक "संयुक्त" रास्ते में जमा हो जाती है : एक समर्पित यूनिकोड कोड बिंदु है: u'\xb4', जो u'\u00b4' के लिए शॉर्टेंड है।

उनमें से दोनों अकेले उच्चारण का प्रतिनिधित्व करते हैं, जिसे अंतरिक्ष चरित्र पर उच्चारण के रूप में देखा जा सकता है।

+0

धन्यवाद, सभी उत्तरों बहुत उपयोगी हैं – newtover

+1

यह भी दिलचस्प है कि क्यों 'सामान्यीकृत करें' ('एनएफकेसी', यू '\ u0301') '' \ xb4'' 'वापस नहीं लौटाता है। – newtover

संबंधित मुद्दे