Python 用空格替换字符串

Python replace string with whitespace

我有一个包含以下数据的 test.txt 文件:

jon doe smith 
\jon\-\ \jon\-\ \jon\-\ \doe\- \ \doe\-\ 
\doe\-\ \smith\- \ \smith\-\ \smith\-\

我一直想达到的目的是从 txt 文件中删除下面代码中提到的列表“名称”中提到的内容。

with open(r'test.txt', 'r') as file:
    data = file.read()
print(data)
name=['jon','doe']

for e in name:
   new_string=data.replace('\' + e + '\-\1\',' ').replace('\' + e + '\-\2\',' ').replace('\' + e + '\-\3\',' ').replace('\' + e + '\',' ')

print(new_string)

此代码显示的输出:-

jon doe smith 
\jon\-\ \jon\-\ \jon\-\ \doe\- \ \doe\-\
\doe\-\ \smith\- \ \smith\-\ \smith\-\
jon doe smith
\jon\-\ \jon\-\ \jon\-\  - \
  \smith\- \ \smith\-\ \smith\-\

我需要的输出:-

jon doe smith 
\jon\-\ \jon\-\ \jon\-\ \doe\- \ \doe\-\
\doe\-\ \smith\- \ \smith\-\ \smith\-\
         smith

           \smith\- \ \smith\-\ \smith\-\

此外,有没有一种方法可以使用正则表达式代替替换?

尝试:

import re
pattern = r"\?(\w+)\?(- ?[\\d]*)?"
res = re.sub(pattern, lambda x: x[0] if x[1] not in name else ' ', x)