2012-03-30 21 views
18

जब मैं पाइथन 2.7 में .lower() का उपयोग करता हूं, स्ट्रिंग को ŠČŽ अक्षरों के लिए लोअरकेस में परिवर्तित नहीं किया जाता है। मैंने शब्दकोश से डेटा पढ़ा।पायथन 2.7 लोअरकेस

मैंने str(tt["code"]).lower(), tt["code"].lower() का उपयोग करने का प्रयास किया।

कोई सुझाव?

+1

http://stackoverflow.com/questions/727507/how-can-i-do-unicode-uppercase पर एक नज़र डालें, मुझे लगता है कि यह शायद संबंधित है। – mgilson

उत्तर

22

उपयोग यूनिकोड तार:

[email protected]:~$ python 
Python 2.7.2+ (default, Oct 4 2011, 20:06:09) 
[GCC 4.6.1] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> print "ŠČŽ" 
ŠČŽ 
>>> print "ŠČŽ".lower() 
ŠČŽ 
>>> print u"ŠČŽ".lower() 
ščž 

कि थोड़ा u देखते हैं? इसका मतलब है कि यह str ऑब्जेक्ट की बजाय unicode ऑब्जेक्ट के रूप में बनाया गया है।

+2

लेकिन अगर वह शाब्दिक नहीं है तो वह यूनिकोड कैसे प्राप्त करता है? – agf

+0

मैं dict से पढ़ रहा हूं तो टीटी ["कोड"] को "ŠČŽ" में कैसे परिवर्तित करें? – Yebach

+0

** यूनिकोड (टीटी ["कोड"], 'लैटिन 2') ** का उपयोग करें, जहां 'लैटिन 2' एन्कोडिंग का उपयोग किया जाता है, इसलिए आपको अलग-अलग उपयोग करने की आवश्यकता हो सकती है। – Tupteq

4

उपयोग यूनिकोड:

>>> print u'ŠČŽ'.lower().encode('utf8') 
ščž 
>>> 

होते ही आप यूनिकोड के रूप में इसे बाहर की दुनिया से अपने कार्यक्रम प्रवेश करती है, बल्कि केवल समय के मुकाबले अपने पाठ बदलने की आवश्यकता है, जिस पर आप एक समस्या देखी।

तदनुसार, या तो codecs मॉड्यूल का उपयोग डीकोडेड टेक्स्ट में पढ़ने के लिए करें, या 'bytestring'.decode('latin2') (जहां लैटिन 2 के स्थान पर आपको वास्तविक एन्कोडिंग का उपयोग करना चाहिए) का उपयोग करना चाहिए।

+0

मैं dict से पढ़ रहा हूं तो टीटी ["कोड"] को "ŠČŽ" में कैसे परिवर्तित करें? मैं ustr (tt ["code"]) का उपयोग नहीं कर सकता। निचला()। एनकोड ('utf8') या str (tt [u "code"])। निचला()। एन्कोड ('utf8') – Yebach

+0

@Yebach अद्यतन देखें। – Marcin