【问题标题】:Python replace string with whitespacePython用空格替换字符串
【发布时间】:2021-05-11 02:24:06
【问题描述】:

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

jon doe smith 
\jon\-\1\ \jon\-\2\ \jon\-\3\ \doe\- \1\ \doe\-\2\ 
\doe\-\3\ \smith\- \1\ \smith\-\2\ \smith\-\3\

我一直试图从 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\-\1\ \jon\-\2\ \jon\-\3\ \doe\- \1\ \doe\-\2\
\doe\-\3\ \smith\- \1\ \smith\-\2\ \smith\-\3\
jon doe smith
\jon\-\1\ \jon\-\2\ \jon\-\3\  - \1\
  \smith\- \1\ \smith\-\2\ \smith\-\3\

我需要的输出:-

jon doe smith 
\jon\-\1\ \jon\-\2\ \jon\-\3\ \doe\- \1\ \doe\-\2\
\doe\-\3\ \smith\- \1\ \smith\-\2\ \smith\-\3\
         smith

           \smith\- \1\ \smith\-\2\ \smith\-\3\

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

【问题讨论】:

标签: python python-3.x string replace re


【解决方案1】:

试试:

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

【讨论】:

  • 虽然此代码可能会为问题提供解决方案,但最好添加有关其工作原理/方式的上下文。这可以帮助未来的用户学习并最终将这些知识应用到他们自己的代码中。解释代码时,您也可能会得到用户的积极反馈/赞成。
  • 对不起,英语不是我的语言。 re.sub 允许使用函数来定义替换参数,这里用于测试捕获的文本是否在名称集中。
猜你喜欢
  • 1970-01-01
  • 2020-12-19
  • 1970-01-01
  • 1970-01-01
  • 2013-05-09
  • 1970-01-01
  • 2015-08-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多