我是python的新手。我想比较两个字符串。但是应该忽略它们中的数字。
EG。想要将“addf.0987.addf”与“addf.1222.addf”进行比较
你可以帮忙吗?
答案 0 :(得分:1)
您可以使用all()
:
>>> one = "addf.0987.addf"
>>> two = "addf.1222.addf"
>>> all(i[0] == i[1] for i in zip(one, two) if not i[0].isdigit())
True
或者:
>>> one = "addf.0987.addf"
>>> two = "addf.1222.addf"
>>> [i for i in one if not i.isdigit()] == [i for i in two if not i.isdigit()]
True
答案 1 :(得分:1)
在这里。
def is_equal(m, n):
if len(m) != len(n):
return False
for ind in xrange(len(m)):
if m[ind].isdigit() and n[ind].isdigit():
continue
if m[ind] != n[ind]:
return False
else:
return True
is_equal("addf.0987.addf", "addf.1222.add") # It returns False.
is_equal("addf.11.addf", "addf.11.addf") # It returns True.
is_equal("addf.11.addf", "addf.22.addf") # it returns True.
答案 2 :(得分:0)
Python具有比较字符串或字符串片段的简单而优雅的方法(例如,参见Haidro的答案)。这是我非常喜欢Python的一个方面。但如果你想要一些非常愚蠢的东西:
a1 = 'addf.1234.addf'
a2 = 'addf.4376.addf'
a3 = 'xxxx.1234.xxxx'
my_compare = lambda x: (x[:4], x[-4:])
my_compare(a1) == my_compare(a2)
=> True
my_compare(a1) == my_compare(a3)
=> False
(注意这只是为了好玩:p)