मेरे पास स्ट्रिंग्स हैं जो बहुभाषी दोनों भाषाओं में शामिल हैं जो व्हाइटस्पेस शब्द शब्द विभाजक (अंग्रेजी, फ्रेंच, आदि) और भाषाओं (चीनी, जापानी, कोरियाई) के रूप में उपयोग करती हैं।पायथन: बहुभाषी (जैसे चीनी और अंग्रेजी) तारों पर इस "हाइब्रिड" विभाजन() को करने का कोई तरीका?
इस तरह के एक स्ट्रिंग को देखते हुए, मैं विभाजक के रूप में खाली स्थान के का उपयोग कर शब्दों में अंग्रेजी/फ्रेंच/आदि हिस्सा अलग करने के लिए, और अलग-अलग पात्रों में चीनी/जापानी/कोरियाई हिस्सा अलग करना चाहते हैं।
और मैं उन सभी अलग-अलग घटकों को एक सूची में रखना चाहता हूं।
केस 1: अंग्रेज़ी-केवल स्ट्रिंग
कुछ उदाहरण शायद यह स्पष्ट हो जाएगा। मैं चीनी अक्षरों की एक सूची में स्ट्रिंग बदल सकते हैं
>>> list(u"我爱蟒蛇")
[u'\u6211', u'\u7231', u'\u87d2', u'\u86c7']
इस मामले में: इस मामले आसान है:
>>> "I love Python".split()
['I', 'love', 'Python']
केस 2: चीनी केवल स्ट्रिंग। लेकिन सूची के भीतर मैं यूनिकोड अभ्यावेदन हो रही है:
[u'\u6211', u'\u7231', u'\u87d2', u'\u86c7']
मैं इसे कैसे यूनिकोड के बजाय वास्तविक पात्रों को प्रदर्शित करने के मिलता है? कुछ ऐसा:
['我', '爱', '蟒', '蛇']
??
केस 3: के अंग्रेजी & चीनी का मिश्रण:
मैं एक इनपुट स्ट्रिंग जैसे
"我爱Python"
चालू करना चाहते हैं और यह इस प्रकार की सूची में बदल जाता है:
['我', '爱', 'Python']
क्या ऐसा कुछ करना संभव है?
दुर्भाग्य से, वहाँ अजगर के वर्तमान में एक misfeature है 're' मॉड्यूल जो शून्य-लंबाई वाले मैचों पर विभाजित करने के लिए' re.split() 'को रोकता है: http://stackoverflow.com/questions/2713060/why-doesnt-pythons-re-split-split-on-zero-length -मैच - इसलिए आप सीधे इसके लिए पायथन में नियमित अभिव्यक्तियों का उपयोग नहीं कर सकते हैं। –
कोरियाई शब्द पृथक्करण के लिए व्हाइटस्पेस का उपयोग करता है। – Leovt