मुझे पर्ल नहीं पता, इसलिए मैं पाइथन के लिए उत्तर दे रहा हूं।
पायथन को पता नहीं है कि इनपुट टेक्स्ट यूनिकोड में है। आपको यूनिकोड में यूटीएफ -8 या वास्तव में जो कुछ भी है, उससे स्पष्ट रूप से डीकोड करना होगा। फिर आप इसे संसाधित करने के लिए सामान्य पायथन टेक्स्ट प्रसंस्करण सामग्री का उपयोग कर सकते हैं।
http://docs.python.org/howto/unicode.html
यहाँ एक सरल पायथन 2.x कार्यक्रम आप की कोशिश करने के लिए है: मानक इनपुट से
import sys
for line in sys.stdin:
u_line = unicode(line, encoding="utf-8")
for ch in u_line:
print ch, # print each character with a space after
यह प्रतियां लाइनों, और यूनिकोड के लिए प्रत्येक पंक्ति बदल देता है। एन्कोडिंग को यूटीएफ -8 के रूप में निर्दिष्ट किया गया है। फिर for ch in u_line
प्रत्येक चरित्र के लिए ch
सेट करता है। फिर print ch,
किसी चरित्र को मुद्रित करने के लिए पाइथन 2.x में आसान तरीका है, बिना किसी कैरिज रिटर्न के, एक स्पेस के बाद। अंत में एक नंगे print
एक कैरिज रिटर्न जोड़ता है।
मैं अभी भी अपने अधिकांश काम के लिए पायथन 2.x का उपयोग करता हूं, लेकिन यूनिकोड के लिए मैं आपको पायथन 3.x का उपयोग करने की सलाह दूंगा। यूनिकोड सामान वास्तव में सुधार हुआ है।
उपरोक्त प्रोग्राम का पाइथन 3 संस्करण यहां है, जो मेरे लिनक्स कंप्यूटर पर परीक्षण किया गया है।
import sys
assert(sys.stdin.encoding == 'UTF-8')
for line in sys.stdin:
for ch in line:
print(ch, end=' ') # print each character with a space after
डिफ़ॉल्ट रूप से, पायथन 3 मानता है कि इनपुट यूटीएफ -8 के रूप में एन्कोड किया गया है। डिफ़ॉल्ट रूप से, पाइथन फिर यूनिकोड में डीकोड करता है। पायथन 3 तार हमेशा यूनिकोड होते हैं; एक विशेष प्रकार bytes()
एक स्ट्रिंग-जैसी ऑब्जेक्ट के लिए उपयोग किया जाता है जिसमें गैर-यूनिकोड मान ("बाइट्स") होते हैं। यह पायथन 2.x के विपरीत है; पायथन 2.x में, मूल स्ट्रिंग प्रकार बाइट्स की एक स्ट्रिंग थी, और यूनिकोड स्ट्रिंग एक विशेष नई चीज़ थी।
बेशक यह ज़रूरी नहीं है कि एन्कोडिंग यूटीएफ -8 है, लेकिन यह हमारे इरादों को दस्तावेज करने और यह सुनिश्चित करने का एक आसान तरीका है कि डिफ़ॉल्ट किसी भी तरह से नहीं बदला गया।
पायथन 3, print()
में अब एक फ़ंक्शन है। और एक प्रिंट स्टेटमेंट के बाद एक कॉमा को जोड़ने के उस अजीब सिंटैक्स के बजाय इसे एक नई लाइन के बजाय एक जगह प्रिंट करने के लिए, अब एक नामित कीवर्ड तर्क है जो आपको अंत चार को बदलने देता है।
नोट: मूल रूप से पाइथन 2.x प्रोग्राम में इनपुट लाइन को संभालने के बाद, और पाइथन 3.x प्रोग्राम में print()
को संभालने के बाद मेरे पास print
कथन था। जैसा कि जेएफ सेबेस्टियन ने बताया, कोड इनपुट लाइन से वर्णों को प्रिंट कर रहा है, और अंतिम चरित्र एक नई लाइन होगी, इसलिए वास्तव में अतिरिक्त प्रिंट स्टेटमेंट की आवश्यकता नहीं है।
'$ sed/s/./&/g '<<<" одбрение за "' ' और अधिक पढ़ें और –
@ इग्नसियो वाज़्यूज़-एब्राम: 'sed' s /।/&/g''graphemes के लिए काम नहीं करता है (यह महत्वपूर्ण है कि किसी पाठ में संयुक्त वर्ण होते हैं, उदाहरण के लिए,' "Солженицын" ')। पर्ल में, पायथन इसे '/ \ X /' regex का उपयोग करके हल किया जा सकता है। – jfs