我试图检查一个字符串是否等于另一个字符串,除了sting内括号内的不同数字变量。任何人都可以帮助我吗?
#example name: "hername: [485]"
name = "myname"
random_name = #random string from a list
objectname = (str(random_name))+": [#any number]")
if objectname.startswith(str(name)):
#do something
答案 0 :(得分:1)
最严格的测试是使用正则表达式:
import re
if re.search(r'^{}: \[\d+\]$'.format(re.escape(name)), objectname):
这将匹配完全等于name: [number]
的字符串,其中number
由1位或更多位数组成。
如果您的对象名称始终遵循该模式,您可以不那么严谨并只测试name: [
,并且您可以假设在括号后面总是有一个数字:
if objectname.startswith('{}: ['.format(name)):
或者更简单,假设你的所有名字总是以: [number]
结尾,只测试冒号前的名字:
if objectname.partition(':')[0] == name:
演示:
>>> import re
>>> objectnames = 'hername: [485]', 'myname: [42]', 'myname: [81]'
>>> name = 'myname'
>>> for objectname in objectnames:
... if re.search(r'^{}: \[\d+\]$'.format(re.escape(name)), objectname):
... print objectname, 'matches'
...
myname: [42] matches
myname: [81] matches
>>> for objectname in objectnames:
... if objectname.startswith('{}: ['.format(name)):
... print objectname, 'matches'
...
myname: [42] matches
myname: [81] matches
>>> for objectname in objectnames:
... if objectname.partition(':')[0] == name:
... print objectname, 'matches'
...
myname: [42] matches
myname: [81] matches
答案 1 :(得分:0)
你必须创建正则表达式。
import re
name = "myname"
random_name = #random string from a list
objectname = (str(random_name))+": [#any number]")
prog = re.compile(name+':.\[\d+\]')
if prog.match(objectname):
#do something