我是 python 新手。我想比较两个字符串。但是应该忽略其中的数字。
例如。想将“addf.0987.addf”与“addf.1222.addf”进行比较
你能帮忙吗?
就这样。
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.
您可以使用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
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)