манипуляции со строками - re.sub в jython - PullRequest
1 голос
/ 22 декабря 2009

Допустим, у меня есть строка вроде этого "это утверждение" и если я хочу найти и заменить строку с этим «это ** заявление»

строка для поиска - это оператор, этот оператор, этот оператор и любая комбинация преобразуют их в этот оператор trim т.е. для любой комбинации слов между этим & оператором замените его на trim для другого набора замените fun на notfun .

так что это программа

import re
file=open('file','r+')
search=re.sub('this \(a_zA_Z0_9)+ a statement','\1trim',file),('this is fun','this is notfun',file)
file.close()

что-то не так, поскольку в файле ничего не меняется.

спасибо всем.

1 Ответ

1 голос
/ 22 декабря 2009

re.sub не работает с файлами, он работает со строками.Вам необходимо прочитать содержимое файла в строку, затем использовать re.sub для изменения строки, а затем записать измененную строку обратно в файл.

Простой пример:

text = open("myfile.txt").read()
# This is your original re.sub call, but I'm not sure it really does what you want.
text = re.sub('this \(a_zA_Z0_9)+ a statement', '\1trim', text)
text = re.sub('this \(a_zA_Z0_9)+ another replacement', 'some other thing', text)
open("myfile.txt", "w").write(text)
...