2013-08-09 3 views
6

Я использую Notepad ++ для редактирования текстового файла, который был плохо закодирован. Программа не учитывала раскладку клавиатуры AZERTY для пользователя. Результат представляет собой текстовый файл следующим образом (пример я сделал)Массовая замена строк в текстовом файле (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/ 

мне нужно сделать объемную замену символов следующим

a > q 

q > a 

[/0] > 0 

! > 1 

и несколько других

Можно ли создать таблицу символов для замены? Я немного новичок, и я не знаю, позволяет ли 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, поэтому это не полный ответ. Тем не менее, это не проходит тестовый случай, и делает это так быстро, как любой одиночный символ замены может быть сделано в Python (если вам не нужно принимать unicode во внимание, а)

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) 

Таким образом, до тех пор, как вы найдете какая версия АЗЕРБАЙКА используется вашим пользователем, вы должны быть в порядке. Просто убедитесь, что вы правильно заполнили таблицу переводов деталями реализации AZERTY.

+0

И вы можете запустить скрипт с помощью http://npppythonscript.sourceforge.net/ – Spork

1

В блокноте Notepad ++ есть макрокоманд, но макросы не могут быть записаны ни на одном задокументированном встроенном языке. Вы можете записать макрос, который выполняет 70 операций поиска и замены. См. this explanation. Существует некоторая информация о «взломе» макроязыка here.

Очевидно, что Notepad ++ не предназначен для этой задачи. Решения Python в порядке, но Perl первоначально предназначался для таких вещей. Вот один лайнер. Это для Windows. В bash/Linux замените двойные кавычки на одиночные.

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

Он будет делать то, что @ решение kreativitea в делает (я использовал свои строки перевода), чтение стандартного ввода и печати на стандартный вывод.

Смежные вопросы