从多个Python文件中删除特定代码行

从多个Python文件中删除特定代码行,python,regex,string,Python,Regex,String,我目前正试图从多个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=Tr

我目前正试图从多个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')
)
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()
我想删除
thickness=300
save=True

我做了以下工作:

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')
)
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()
当我打印出新的文件内容时,它会给我与原始文件相同的结果。
当正则表达式匹配时,我必须考虑制表符和新行字符串吗?

您需要做的就是分别编译每个实例

类似于以下的方法将起作用:

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()
请注意,您可能需要进行一些修复:

  • 添加到正则表达式中,否则它将在以后引发错误。此操作如下:
    重新编译(r'\b(?%s)\b\,'%'.join(e))
  • 添加不必要的空格,
    \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')
    )