Удаление указанной строки кода c из нескольких файлов Python - PullRequest
0 голосов
/ 21 марта 2020

В настоящее время я пытаюсь удалить указанный аргумент ключевого слова c из нескольких файлов Python и использую пакет re, чтобы попытаться удалить его; однако каждый раз, когда я пытаюсь выполнить подстановку регулярных выражений, это не удаляет все это.

Файл примера foo.py, который может выглядеть следующим образом:

import numpy as np
import pandas as pd
import test_utils as tu

test = tu.generate_graph(
   graph_type='line',
   thickness=300,
   color='blue',
   save=True,
   data=pd.read_csv('bar.csv')
)

Я хочу удалить все экземпляры thickness=300 и save=True

Я сделал следующее:

import re

target_strs = ['thickness=300','save=True'] 
open_file = open('foo.py', 'r')
read_file = open_file.read()
regex = re.compile(r'\b(?:%s)\b' % ''.join(target_strs))
read_file = regex.sub('', read_file)
write_file = open('foo.py', 'w')
write_file.write(read_file)
write_file.close()

Когда я распечатываю содержимое нового файла, оно дает мне тот же результат, что и оригинал. Нужно ли учитывать вкладки и строки строк при сопоставлении с регулярным выражением?

1 Ответ

2 голосов
/ 21 марта 2020

Все, что вам нужно сделать, это скомпилировать каждый экземпляр отдельно.

Будет работать что-то вроде следующего:

import re

target_strs = ['thickness=300','save=True']
open_file = open('foo.py', 'r')
read_file = open_file.read()
for e in target_strs:
    regex = re.compile(r'\b(?:%s)\b' % ''.join(e))
    read_file = regex.sub('', read_file)
write_file = open('foo_test.py', 'w')
write_file.write(read_file)
write_file.close()

Обратите внимание, что есть некоторые исправления, которые вы, возможно, захотите сделать:

  1. Добавьте , к регулярному выражению, иначе это вызовет более поздние ошибки, это будет сделано: re.compile(r'\b(?:%s)\b\,' % ''.join(e))
  2. Добавьте ненужные пробелы \s, как показано ниже: regex = re.compile(r'\b(?:%s)\b\,\s' % ''.join(e))

Всего после вышеуказанных изменений вы получите следующий результат:

import numpy as np
import pandas as pd
import test_utils as tu

test = tu.generate_graph(
   graph_type='line',
      color='blue',
      data=pd.read_csv('bar.csv')
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...