給定一個字串和一個字串模板,我如何檢查是否有可以用作替代的有效變數?
例如,
def find_substitute(template: str, s: str) -> str:
...
template = "a_%(var)s_b_%(var)s_c"
find_substitute(template, "a_foo_b_foo_c") # Should return foo
find_substitute(template, "a_foo_b_bar_c") # Should raise, no valid substitution value
find_substitute(template, "a_foo_a_foo_a") # Should raise, no valid substitution value
我可以做template.split("%(var)s")然后嘗試匹配字串的每個部分,但我猜有更好的方法來做到這一點,也許使用正則運算式。
uj5u.com熱心網友回復:
你可以用re.match這個。
import re
def find_substitute(template ,string):
m = re.match(template, string)
print(m.group(1)) if m else print("no match")
if __name__=="__main__":
var = "foo"
t = fr'a_({var})_b_(\1)_c'
lines = ['a_foo_b_foo_c', 'a_bar_b_bar_c', 'a_foot_b_balls_c']
for line in lines:
find_substitute(t, line)
#output:
#foo
#no match
#no match
re.match回傳一個匹配物件。您可以使用匹配物件來獲取完整匹配甚至捕獲的組。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/468108.html
