比较字符串并确定它们是否与隐藏值相同

时间:2012-10-19 04:36:17

标签: python string

所以,假设你给了两个带有隐藏值的字符串,你想知道它们是否有可能是相同的,所以例如你有'jupiter'这个词,现在让我们说'^'代表隐藏值,例如:    'jupiter'可以等于='j ^^^ t ^ r,但不是'j ^^^'因为那只有4个字符,或者'^ a ^^^^',因为第二个字符在'jupiter'中是'a'。我不知道如何启动程序,再次感谢大家!

也是python的新手,谢谢你们!

4 个答案:

答案 0 :(得分:3)

我会这样做:

  1. 确保两个字符串具有相同的长度。如果他们不这样做,他们就不能是同一个词。
  2. 迭代一个字符串并保留一个计数器变量。您可以使用for index, letter in enumerate(word):来简化此操作。
  3. letterword2中相同位置的字母进行比较(您可以使用word2[index])。
  4. 如果letter不是^且字词中的两个字母不同,return False,因为这两个字不能相同。
  5. 一旦循环结束,如果您尚未返回,return True
  6. 这是一个神秘的单行内容,仅供参考:

    len(w1) == len(w2) and all(a == b or '^' in a + b for a, b in zip(w1, w2))
    

    或者使用正则表达式:

    re.match('^{}$'.format(w2.replace('^', '.')), w1)
    

答案 1 :(得分:0)

def match(st,t):
 if len(st)!=len(t):
  return False
 for i,j in zip(t,st):
   if i!="^" and i!=j:
    return False
 return True

>>> st="jupiter"
>>> t="j^p^^e^"
>>> match(st,t)
True
>>> t="j^"
>>> match(st,t)
False
>>> t="j^pit^e"
>>>
>>> match(st,t)
False

答案 2 :(得分:0)

>>> def compare(A,B):
...     if not len(A) == len(B): return False
...     return all(a == b or a == '^' or b == '^' for a,b in zip(A,B))
... 
>>> compare('j^^^t^r','jupiter')
True 

答案 3 :(得分:0)

这应该有效:

def match(a,b):
    if len(a)!=len(b):
        return "strings don't match"
    else:
        for x,y in zip(a,b):
            if not(any((x=="^",y=="^")) or x==y):
                return "strings don't match"
        return "matched"

print match("jupiter","j^^^t^r")    
print match("jupiter","^a^^^^^")
print match("abc","^b^")
print match("abc","b^^")

<强>输出:

matched
strings don't match
matched
strings don't match