我正在寻找一种方法,该方法基于 *特定词后跟一个数字* 模式从字符串中查找和删除子字符串。
例如:
string = "These are 02 examples"
# Expected output : These examples
string = "Below are 2 examples"
# Expected output : Below examples
string = "Above are 05 examples"
# Expected output : Above examples
在我要在其中使用的程序中,“ are”一词在所有情况下都将保持不变,仅更改后的数字即可。谢谢。
答案 0 :(得分:1)
要了解如何编写正则表达式,您应该看一下regexr之类的网站,该网站提供了备忘单和许多可供学习的工具。
然后,您将使用sub
方法:https://docs.python.org/3.7/library/re.html#re.sub
您要在此处查找的正则表达式是:
s2 = re.sub(r" are \d+", "", mystr)
更新:或者,如果您想使其更快速,请在之前编译正则表达式:
rx = re.compile(r" are \d+")
s2 = rx.sub("", mystr)
答案 1 :(得分:1)
您可以使用re.sub通过正则表达式are
在\s+are\s+\d+
之后找到一个具有1个或多个数字的数字,并在它们之间使用一个或多个空格,并将其替换为{{1} },下面的正则表达式还会处理原始单词are
周围的空格!
另外值得注意的是,您可以使用re.compile
预先编译正则表达式。are
输出将为
import re
def change(s):
pattern = re.compile('\s+are\s+\d+')
return re.sub(pattern, ' are', s)
print(change("These are 02 examples"))
print(change("These are 2 examples"))
print(change("These are 05 examples"))
print(change("These are 05 examples"))
print(change("These are 05 examples are 045 examples"))
答案 2 :(得分:0)
您可以使用正则表达式:
import re
text = """
These are 02 examples
Below are 2 examples
Above are 05 examples
"""
v = re.sub(r'are \d+', '', text)
print(v)
输出:
These examples
Below examples
Above examples