Я хотел бы заменить текст в файле с помощью регулярных выражений и Python.Используя sed
, я могу сделать что-то подобное в командной строке
sed -r 's/([0-9]{1,3}\.)([0-9]{1,3}\.)([0-9]{1,3}\.)([0-9]{1,3})/\1\2xx.xx/' ./input/my_file > ./output/my_file_new
, которая в основном ищет строку ip = [4 октета] и заменяет последние два на xx.
Входной файл будет выглядеть как
name=rockband&ip=176.4.23.71&releasedate=none
name=rockband2&ip=121.1.44.52&releasedate=none
Нужный выходной файл выглядит как
name=rockband&ip=176.4.xx.xx&releasedate=none
name=rockband2&ip=121.1.xx.xx&releasedate=none
Мне нужно поместить это в скрипт Python, который я использую
import re
regexp = re.compile(r's/([0-9]{1,3}\.)([0-9]{1,3}\.)([0-9]{1,3}\.)([0-9]{1,3})/\1\2xx.xx/')
def replace(source_file_path):
fh, target_file_path = mkstemp()
with codecs.open(target_file_path, 'w', 'utf-8') as target_file:
with codecs.open(source_file_path, 'r', 'utf-8') as source_file:
for line in source_file:
print(line)
target_file.write( !! How to use sub in here )
remove(source_file_path)
move(target_file_path, source_file_path)
Как я могу использовать метод sub()
для достижения того, что я хочу сделать?Мне нужно передать 3 аргумента этому методу, и я могу думать только о том, как передать 2, я не знаю, каким должен быть этот третий аргумент
target_file.write(re.sub(regexp, line))