2013-08-09 30 views
6

私はNotepad ++を使用して、エンコードされていないログファイルを編集しています。プログラムは、ユーザーのAZERTYキーボードレイアウトを考慮していませんでした。 (私が作っ例)を以下のように結果が文字列の一括置換(Notepad ++)

a > q 

q > a 

[/0] > 0 

! > 1 

およびいくつかの他

がすることが可能ですが、以下のように私は文字の一括交換を行う必要があり

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

テキストファイルです置き換えられる文字のテーブルを作成しますか?私は少し初心者です。私はNotepad ++でスクリプトを実行できるかどうかわかりません。

答えて

0

私はNotepad ++についてよくわかりません。しかし、あなたのマシンにPythonがインストールされていれば、この小さなスクリプトを使うことができます。

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 

あなたのニーズに合わせてreplace_dict変数をカスタマイズするだけです。

0

したがって、いくつかの種類のAZERTYレイアウトがあります。これは完全な答えではありません。しかし、それはあなたのテストケースに合格し、そして限り、あなたは見つけるよう、

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を取る必要がある場合を除き)Pythonでの速さの任意の単一文字の置換を行うことができますようにそれを行いますあなたのユーザーが使用しているAZERTYのバージョンを確認するには、大丈夫です。 AZERTYの実装の詳細を翻訳テーブルに正しく記入してください。

+0

http://npppythonscript.sourceforge.net/でスクリプトを実行できます – Spork

1

メモ帳++にはマクロレコーダがありますが、文書化された埋め込み言語でマクロを記述することはできません。あなたは、70回程度の検索と置換操作を行うマクロを記録する可能性があります。 this explanationを参照してください。マクロ言語「ハッキング」に関するいくつかの情報がありますhere

明らかにNotepad ++はこの作業のためのものではありませんでした。 Pythonのソリューションは大丈夫ですが、Perlはもともとこのようなもののためにもともと意図されていました。ここには1つのライナーがあります。これはWindows用です。 bash/Linuxでは、二重引用符を単一引用符で置き換えてください。

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

これは、標準出力に標準入力と印刷を読んで、(私は彼の翻訳文字列を使用)@ kreativiteaのソリューションが何を行います。