Поиск и замена нескольких слов в блокноте ++ с использованием скрипта Python - PullRequest
0 голосов
/ 01 января 2019

Я обычно использую скрипт python для замены нескольких выражений одновременно в текстовом файле.

Я создаю справочный файл с заменяемыми выражениями, выражения разделяются пробелом:

value1 valueA
value2 valueB
value3 valueC

затем я использую скрипт на python:

with open('path to my referencefile.txt') as f:
    for l in f:
        s = l.split()
        editor.replace(s[0], s[1])

Обычно он работает, но у меня возникает проблема, когда я пытаюсь заменить выражения, которые уже существуют и которые я хочу переупорядочить в принципе.

Пример:

value1 value2
value2 value3
value3 value4

В конце значение1 будет заменено на значение2, затем значение2 будет заменено на значение3.Наконец, значение 3 будет заменено значением 4.Что означает, что значение1 стало значением4 вместо значения2 ... Как сохранить значение1 замененным значением2 вместо этого каскада замен?(и, конечно, value2 заменяется на value3, а value3 на value4)

В notepad ++ можно использовать функцию замены регулярного выражения с формулой (value1) | (value2) | (value3), замененной на (? 1value2) (?2value3) (? 3value4).Есть ли способ достичь того же результата с помощью скрипта Python, упомянутого выше?

Кроме того, как вы модифицируете скрипт Python для замены выражений только в выбранной области текстового файла?

Спасибо за вашу помощь:)

Ответы [ 2 ]

0 голосов
/ 02 января 2019

Если вы хотите заменить эти два столбца в другом текстовом файле, вы можете использовать следующий код:

with open('path to my referencefile.txt') as f:
    another_file = open("another file name","w")
    for l in f:
        s = l.split()
        another_file.write(s[0] + " " + s[0][:-1] + str(int(s[0][-1])+1) + "\n" )
    another_file.close()

Как видите, здесь мы заменяем (не совсем заменяем, но копируем) 'A' до '2' в самой первой строке входного текстового файла и т. Д., Одновременно записывая в другой файл.

Если приведенный выше код разрешаетцели, чем это хорошо, иначе дайте мне знать ваши сомнения.

0 голосов
/ 02 января 2019

Я не до конца понял вопрос, но вы можете использовать этот код.

with open("val.txt", "r+") as f:
file = f.readlines()
f.seek(0)
for line in file:
    s = line.split()
    s.reverse()
    f.writelines(s[0] + ' ' + s[1] + '\n')

Это просто меняет два столбца.Тем не менее, я думаю, что это правильный способ обработки значения в текстовом файле.

...