2013-08-09 5 views
6

मैं टेक्स्ट फ़ाइल को संपादित करने के लिए नोटपैड ++ का उपयोग कर रहा हूं जो खराब एन्कोडेड लॉग है। कार्यक्रम ने उपयोगकर्ता के एज़र्टी कीबोर्ड लेआउट को ध्यान में नहीं रखा। परिणाम इस प्रकार है (उदाहरण के मैं बना)एकल पाठ फ़ाइल में स्ट्रिंग्स का थोक प्रतिस्थापन (नोटपैड ++)

Hi guysm this is Qqron< 
I zonder zhen ze cqn go to the szi;;ing pool together 
:y phone nu;ber is !%%)@!#@@#(
Cqll ;e/ 

एक पाठ फ़ाइल है मैं के रूप में

a > q 

q > a 

[/0] > 0 

! > 1 

और कुछ अन्य लोगों का अनुसरण करता पात्रों के थोक प्रतिस्थापन बनाने के लिए

यह संभव है की जरूरत है प्रतिस्थापित करने के लिए वर्णों की एक तालिका बनाएँ? मैं शुरुआत करने वाला हूं और मुझे नहीं पता कि नोटपैड ++ स्क्रिप्ट चलाने की अनुमति देता है

उत्तर

0

मुझे नोटपैड ++ के बारे में पता नहीं है। लेकिन अगर आपके मशीन में पाइथन स्थापित है, तो आप इस छोटी सी स्क्रिप्ट कर सकते हैं।

source = """Hi guysm this is Qqron<           
I zonder zhen ze cqn go to the szi;;ing pool together       
:y phone nu;ber is !%%)@!#@@#(            
Cqll ;e/"""                 

replace_dict = {'a': 'q', 'q': 'a', '[/0]': '0', '!': '1'}      

target = ''                 
for char in source:               
    target_char = replace_dict.get(char)          
    if target_char:               
     target += target_char             
    else:                  
     target += char               

print target 

बस अपनी आवश्यकता के अनुसार प्रतिस्थापन_डिक्ट चर को कस्टमाइज़ करें।

0

तो, कुछ अलग-अलग प्रकार के एज़र्टी लेआउट हैं, इसलिए यह एक पूर्ण उत्तर नहीं है। हालांकि, यह आपके परीक्षण का मामला पारित करता है, और जितनी जल्दी किसी भी एक वर्ण प्रतिस्थापन किया जा सकता है यह करता है अजगर में

from string import maketrans 

test = '''Hi guysm this is Qqron< 
I zonder zhen ze cqn go to the szi;;ing pool together 
:y phone nu;ber is !%%)@!#@@#(
Cqll ;e/''' 

# warning: not a full table. 
table = maketrans('aqAQzwZW;:[email protected]#$%^&*()m/<', 'qaQAwzWZmM1234567890:?.') 

test.translate(table) 

तो, जब तक कि आप को खोजने के रूप में (जब तक आप खाते में unicode लेने के लिए के रूप में अच्छी तरह से की जरूरत है) आपके उपयोगकर्ता का उपयोग कर रहे AZERTY का कौन सा संस्करण उपयोग कर रहा है, आपको ठीक होना चाहिए। बस एज़र्टी कार्यान्वयन के विवरण के साथ अनुवाद तालिका को सही ढंग से भरना सुनिश्चित करें।

+0

और आप http://npppythonscript.sourceforge.net/ के साथ स्क्रिप्ट चला सकते हैं – Spork

1

नोटपैड ++ में एक मैक्रो रिकॉर्डर है, लेकिन मैक्रोज़ किसी भी दस्तावेज़ वाली एम्बेडेड भाषा में नहीं लिखा जा सकता है। आप संभावित रूप से एक मैक्रो रिकॉर्ड कर सकते हैं जो 70 या उससे अधिक की खोज करता है और ऑपरेशन को प्रतिस्थापित करता है। this explanation देखें। मैक्रो भाषा here "हैकिंग" पर कुछ जानकारी है।

स्पष्ट रूप से नोटपैड ++ इस कार्य के लिए नहीं था। पायथन समाधान ठीक है, लेकिन पर्ल मूल रूप से इस तरह की चीजों के लिए मूल रूप से था। यहां एक लाइनर है। यह विंडोज के लिए है। बैश/लिनक्स में, डबल कोट्स को सिंगल के साथ बदलें।

perl -n -e "tr/aqAQzwZW;:[email protected]#$%^&*()m\/</qaQAwzWZmM1234567890:?./;print" 

यह क्या @ kreativitea समाधान करता है (मैं उसका अनुवाद तार प्रयुक्त) करेंगे, मानक आउटपुट में मानक इनपुट और मुद्रण पढ़ने।

संबंधित मुद्दे