2013-07-03 40 views
-2

对python.I新的我想比较两个字符串,但它们中的数字应该被忽略。在比较字符串时忽略数字

例如,要比较 “addf.0987.addf” 与“addf.1222.addf”

u能帮助

+0

我建议你一个Python代码添加到这一点,除非你真的想在任何语言 – doctorlove

+0

帮助的答案什么?在寻求帮助之前你有尝试过什么吗? – Blender

+0

那么,你的例子应该返回True? – TerryA

回答

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 
+0

这很好!我以前没见过'all()' - 谢谢 –

+0

@NickBurns;).. – TerryA

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. 
0

P ython有比较字符串或字符串切片的简单而优雅的方法(例如参见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)

+0

谢谢大家。对不完整的问题抱歉.....我用all()。 – Praway