2013-08-09 6 views
6

Używam Notepad ++ do edycji pliku tekstowego, który został źle zakodowany. Program nie uwzględniał układu klawiatury AZERTY użytkownika. Rezultatem jest plik tekstowy w następujący sposób (przykład wymyśliłem)Masowa wymiana ciągów w pojedynczym pliku tekstowym (Notepad ++)

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

muszę dokonać masowych zastąpienie znaków następująco

a > q 

q > a 

[/0] > 0 

! > 1 

i kilka innych

Czy jest możliwe stworzyć tabelę postaci do zastąpienia? Jestem trochę początkującym i nie wiem, czy Notepad ++ pozwala uruchamiać skrypty

Odpowiedz

0

Nie wiem o Notatniku ++. Ale jeśli masz zainstalowany Pythona w twoim komputerze, możesz ten mały skrypt.

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 

Po prostu dostosuj zmienną replace_dict do swoich potrzeb.

0

Istnieje wiele różnych układów AZERTY, więc nie jest to pełna odpowiedź. Jednak to nie zdać sprawę testową, a robi to tak szybko, jak każda wymiana pojedynczy znak można zrobić w Pythonie (chyba trzeba wziąć unicode pod uwagę jak dobrze)

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) 

Tak, tak długo, jak znaleźć jakiej wersji AZERTY używa twój użytkownik, powinieneś być w porządku. Upewnij się, że poprawnie wypełniłeś tabelę tłumaczenia szczegółami implementacji AZERTY.

+0

I możesz uruchomić skrypt za pomocą http://npppythonscript.sourceforge.net/ – Spork

1

Notepad ++ ma rejestrator makr, ale makr nie można zapisywać w żadnym udokumentowanym języku osadzonym. Można potencjalnie zarejestrować makro, które wykonuje około 70 operacji wyszukiwania i zamiany. Zobacz this explanation. Jest trochę informacji o "hackowaniu" języka makra here.

Najwyraźniej Notepad ++ nie był przeznaczony do tego zadania. Rozwiązania Pythona są w porządku, ale Perl był pierwotnie przeznaczony na takie rzeczy. Oto jeden liniowiec. Dotyczy to systemu Windows. W bash/Linux zamień podwójne cudzysłowy na pojedyncze.

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

Będzie to co @ rozwiązanie kreativitea za nie (użyłem jego struny Translation), czytanie i drukowanie standardowe wejście na standardowe wyjście.

Powiązane problemy