Searching and replacing cent symbol in Python -
ओएस: सेंदोस 6.5 पायथन संस्करण: 2.7.5
मेरे पास है जानकारी के निम्नलिखित नमूने के साथ एक फाइल मैं प्रतिशत प्रतीक की खोज और प्रतिस्थापित करना चाहूंगा और $ 0 से प्रतिस्थापित करूँगा Infront।
अल्फा $ 1.00 बीटा ¢ 55 & lt; & lt; & lt; & lt; नोट चार्ली $ 2.00 डेल्टा ¢ 23 & lt; & lt; & lt; नोट
मुझे यह इस तरह दिखना है:
अल्फा $ 1.00 बीटा $ 0.55 & lt; & lt; & lt; & lt; नोट चार्ली $ 2.00 डेल्टा $ 0.23 & lt; & lt; & lt; नोट
तो कमांड लाइन (जो काम करता है) में यह कोड है:
sed 's / ¢ / $ 0. / g' * फ़ाइल का नाम * < / कोड> हालांकि कोड के लिए अजगर का प्रयोग करके यह काम नहीं करता है:
आयात उपप्रोसेस हैलो = सबप्रोसेस। ('बिल्ली डेटाफ़ाइल' + '| sed "s / ¢
जब भी मैं ¢ प्रतीक पेस्ट करने की कोशिश करता हूं, तब एक त्रुटि लगता है।
थोड़ा करीब, जब मैं यूनिकोड को पायथन में साइन साइन करता हूं, तो यह नीचे आता है:
प्रिंट (u "\ u00A2")
जब मैं मेरी डेटाफाइल बिल्ली, यह वास्तव में ¢ संकेत के रूप में दिखाता है, एक याद आ रही है। & Lt; & lt; यह निश्चित नहीं है कि यह कोई मदद है
मुझे लगता है कि जब मैं यूनिकोड के साथ सैड करने की कोशिश कर रहा हूं, ¢ से पहले जोड़ा प्रतीक मुझे खोज और बदलने की इजाजत नहीं दे रहा है।
त्रुटि कोड जब कोशिश कर यूनिकोड:
हैलो = subprocess.call (यू "बिल्ली datafile | sed 's / \ uxA2 / $ 0. / जी'", खोल = सच) सिंटैक्स त्रुटि: (यूनिकोड त्रुटि) 'unicodeescape' कोडेक स्थिति 25-26 में बाइट्स डिकोड नहीं कर सकते हैं: छोटा कर दिया \ uXXXX बचने
u00A2 को uxA2 फिक्सिंग, मैं इस मिल:
Sed: -e अभिव्यक्ति # 1, चार 7: `1 '
किसी भी विचार / विचारों के लिए अज्ञात विकल्प?
दोनों उदाहरणों में मुझे नीचे त्रुटि मिलती है: < / P>
[root @ centOS user] # python test2.py ट्रेसबैक (सबसे हाल ही में कॉल अंतिम): फ़ाइल "test2.py", पंक्ति 3, & lt; मॉड्यूल & gt; डेटा = data.decode ( 'utf-8') # डिकोड तुरंत "/usr/local/lib/python2.7/encodings/utf_8.py" यूनिकोड फ़ाइल के लिए, लाइन 16, डिकोड वापसी codecs.utf_8_decode में (इनपुट, त्रुटियों , यह सच है) UnicodeDecodeError: 'UTF8' कोडेक स्थिति 6 में बाइट 0xa2 डिकोड नहीं कर सकते: अवैध शुरू बाइट [जड़ @ CentOS उपयोगकर्ता] Traceback test1.py # अजगर (सबसे हाल कॉल पिछले): फ़ाइल "test1.py", लाइन 11 , & Lt; मॉड्यूल & gt; hello_unicode = hello_utf8.decode ( 'utf-8') फ़ाइल "/usr/local/lib/python2.7/encodings/utf_8.py", रेखा 16, डिकोड वापसी codecs.utf_8_decode (इनपुट, त्रुटियों, यह सच है) UnicodeDecodeError में: 'Utf8' कोडेक स्थिति 6 में बाइट 0xa2 डीकोड नहीं कर सकता: अमान्य प्रारंभ बाइट
यह फ़ाइल की बिल्ली है:
[root @ centOS उपयोगकर्ता] # बिल्ली डेटाफ़ाइल अल्फा ¢ 79
यह डेटाफ़ाइल के नैनो है:
अल्फा ¿½79
< P> यह डेटाफ़ाइल का विम है: [root @ centOS user] # vim fbasdf अल्फा एक ¢ 79 ~
आपके सभी के लिए फिर से धन्यवाद मदद लोग
उत्तर !!
रोब और थॉमस से एसईडी आउटपुट काम करता है। फ़ाइल प्रारूप को charset = iso-8859-1 के रूप में सहेजा गया था मैं यूटीएफ -8 प्रारूप पात्रता के लिए दस्तावेज खोज नहीं पा रहा था।
पहचान की गई फ़ाइल वर्णसेट:
फ़ाइल -बी डेटाफ़ाइल पाठ / सादे; Charset = iso-8859-1
फ़ाइल को बदलने के लिए निम्न कोड का उपयोग किया गया है:
iconv -f iso-8859-1 -t utf8 datafile & gt; स्टीफन थॉमस का जवाब और उस पर विस्तार: कोड> उपप्रक्रिया आयात करें # जब तक आप कर सकते हैं तब तक सभी स्ट्रिंग यूनिकोड में रखें। Cmd_unicode = u "sed '/ \ u00A2 / $ 0. / g' & lt; datafile # # जब आप उन्हें भेजते हैं तो उन्हें एन्कोडेड बाइट स्ट्रिंग में कनवर्ट करें # .check_output (), NOT .call () cmd_utf8 = cmd_unicode.encode ( 'utf-8') hello_utf8 = subprocess.check_output (cmd_utf8, खोल = सच) # डिकोड रसीद hello_unicode पर तुरंत यूनिकोड के लिए किसी भी भेजे बाइट स्ट्रिंग = hello_utf8.decode ( 'utf-8') # और आप आपका उत्तर मुद्रित हैलो_इनिकोड
उपरोक्त कोड "यूनिकोड सैंडविच" के उपयोग को दर्शाता है: बाहर के बाइट्स, अंदर पर यूनिकोड इस सरल उदाहरण के लिए, आप पायथन में सब कुछ आसानी से कर सकते हैं:
डेटाफ़ाइल के रूप में खुले ('डेटाफ़ाइल') के साथ: डेटा = डेटाफाइल.रेड ( ) # बाइट्स डेटा में डेटा = डेटा डाईकोड ('यूटीएफ -8') # डीकोड तुरंत यूनिकोड डेटा = डेटा.रेलेफ़ेस (यू '\ xa2', '' 0 $ '') # यूनिकोड प्रिंट डेटा में सभी आपरेशन # इम्पलिसस आउटपुट के दौरान सांकेतिक शब्दों में बदलना
Comments
Post a Comment