0

我是 python 新手。我想比较两个字符串。但是应该忽略其中的数字。

例如。想将“addf.0987.addf”与“addf.1222.addf”进行比较

你能帮忙吗?

4

3 回答 3

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.
于 2013-07-03T09:29:09.890 回答
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
于 2013-07-03T09:25:49.600 回答
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)

于 2013-07-03T09:36:41.137 回答