अजगर में रिक्त स्थान से तार विभाजित करने के लिए, एक आम तौर पर पैरामीटर के बिना तार का split
विधि का उपयोग करता:पायथन: सभी जगह पात्रों द्वारा बंटवारे स्ट्रिंग
>>> 'a\tb c\nd'.split()
['a', 'b', 'c', 'd']
लेकिन कल मैं एक स्ट्रिंग है ZERO WIDTH SPACE इस्तेमाल किया शब्दों के बीच के रूप में भर में भाग गया कुंआ। (जावास्क्रिप्ट लोगों के बीच में) एक छोटी black magic प्रदर्शन में अपने नए ज्ञान दिया, मैं, सभी whitespace characters से पूछने के लिए कैसे बेहतर विभाजित करने के लिए के बाद से split
पर्याप्त नहीं है चाहते हैं:
>>> u'a\u200bc d'.split()
[u'a\u200bc', u'd']
UPD1
ऐसा लगता है कि sth
जेरेरल काम करता है लेकिन कुछ ओएस सेटिंग्स या पायथन संकलन विकल्पों पर निर्भर करता है। निश्चित रूप से कारण जानना अच्छा लगेगा (और अगर सेटिंग विंडोज़ पर स्विच की जा सकती है)।
तो मैं मुद्दे के बारे में यूनिकोड तकनीकी समिति से संपर्क किया और एक तुरंत एक प्रतिक्रिया वापस प्राप्त प्राप्त किया:
UPD2
cptphil
एक महान link सब कुछ स्पष्ट करता है कि पाया। उन्होंने बताया कि ZWSP था एक समय सफेद स्थान माना जाता पर एक बार, लेकिन वह unicode site से यूनिकोड 4.0.1
एक उद्धरण में बदला गया था:
Zs से U + 200B शून्य चौड़ाई रिक्ति बदलने सीएफ (2003.10.27)
यू + 200 बी शून्य चौड़ाई अंतरिक्ष (ZWSP) के उपयोग के साथ लगातार समस्याएं रही हैं। इस चरित्र का कार्य उन पदों पर एक लाइन ब्रेक की अनुमति देना है जहां इसे सामान्य रूप से अनुमति नहीं दी जाएगी, और इस प्रकार कार्यात्मक रूप से एक सामान्य श्रेणी सीएफ के साथ एक प्रारूप चरित्र है। यह व्यवहार यूनिकोड मानक में अच्छी तरह से प्रलेखित है, और चरित्र को यूनिकोड कैरेक्टर डेटाबेस में व्हाइटस्पेस वर्ण नहीं माना जाता है। हालांकि, ऐतिहासिक कारणों से सामान्य श्रेणी अभी भी जेड (स्पेस सेपरेटर) है, जिसके कारण चरित्र का दुरुपयोग किया जा सकता है। जेडडब्ल्यूएसपी एकमात्र जेड चरित्र भी है जो व्हाइटस्पेस नहीं है। सामान्य श्रेणी नियम डी 13 बेस चरित्र की गलत व्याख्या का कारण बन सकती है क्योंकि ZWSP को अंकों के संयोजन के आधार के रूप में अनुमति देता है।
प्रस्ताव यू + 200 बी की सामान्य श्रेणी को जेड से सीएफ तक बदलना है।
संकल्प: बंद। यूनिकोड संस्करण 4.0.1 में यू + 200 बी की सामान्य श्रेणी जेड से सीएफ में बदल दी जाएगी।
परिवर्तन तब पाइथन में दिखाई देता था। पायथन 2.5.4 और 2.6.5 में u'\u200B'.isspace()
का परिणाम पायथन 2.7.1 में True
है, यह पहले से ही False
है।
नियमित split
अन्य अंतरिक्ष पात्रों के लिए पर्याप्त है:
>>> u'a\u200Ac'.split()
[u'a', u'c']
और अगर है कि आप के लिए पर्याप्त नहीं है, पात्रों द्वारा एक जोड़ने एक Gabi Purcaru
नीचे के रूप में पता चलता है।
मेरी मशीन पर 'u'a \ u200bc डी .split()' 'रिटर्न [u'a ', u'c', u'd ' ] '। यह उबंटू पर पायथन 2.6.5 का उपयोग कर रहा है। – NPE
@aix: यह '[u'a \ u200bc', u'd ']' यहां लौटाता है (आर्क लिनक्स पर पायथन 2.7.2)। यूएस लोकेल –
@aix, हम्म, दिलचस्प! – newtover