将一个字符串与另一个字符串的多个子字符串进行比较

Posted

技术标签:

【中文标题】将一个字符串与另一个字符串的多个子字符串进行比较【英文标题】:Comparing a string with multiple substrings of another string 【发布时间】:2020-09-03 18:48:24 【问题描述】:

还有另一种更简单的方法来编写代码,基本上检查字符串'abcde'的每个字符

if input == 'a' or input == 'ab' or input == 'abc' or input == 'abcd' or input == 'abcde':
    return True

【问题讨论】:

它们可以是“abcde”的多个组合吗?喜欢input=='de' 相关:Comparing a string to multiple items in Python 请不要使用input作为变量名。 【参考方案1】:

这应该和你放的一样。

return 'abcde'.startswith(input)

【讨论】:

从描述看,空字符串的结果应该是什么,"abcde".startswith("") == True,和示例代码不太匹配 是的,如果你不想包含空字符串,我认为最好的办法是添加一个and input【参考方案2】:

不要命名变量input,因为它会影响内置函数input()。这样做被认为是不好的做法,而且很容易选择另一个变量名。

您可以使用集合来检查输入是否与任何子字符串匹配:

lookups = 'a', 'ab', 'abc', 'abcd', 'abcde'

my_input = input()

if my_input in lookups:
    return True

我们也可以使用集合推导生成这个集合:

characters = 'abcde'

lookups = characters[:i] for i in range(1, len(characters) + 1)

my_input = input()

if my_input in lookups:
    return True

对于大量组合,在列表上使用集合的好处是您可以获得恒定的时间O(1) 查找来进行搜索。这比使用列表要好得多,列表将为您提供线性 O(N) 查找。

【讨论】:

【参考方案3】:

有多种可爱的方法可以做到这一点。 startwith 可能是最有效的,但这些也应该有效:

使用lstrip:

return 'abcde'.lstrip(input)!='abcde'

使用list comprehension:

return any(['abcde'[:i+1] == input for i in range(len('abcde'))])

使用regex:

   pattern = re.compile('^'+input)
   return bool(pattern.match('abcde'))

或者只是:

  return 'abcde'[:len(input)]==input

【讨论】:

什么是not not pattern.match(...)?如果您只是为了将匹配转换为布尔值,您可以直接使用boolbool(pattern.match(...))【参考方案4】:

你可以试试这样的:

def your_function():
    # Add as much chars that you want here
    chars = "abcde"

    # Assuming you are taking the user input from terminal
    user_input = input()

    # Loop over every substring from chars
    for i in range(len(chars) + 1):
        if chars[:i] == user_input:
            return True

    return False

如果这有帮助,请告诉我!

【讨论】:

【参考方案5】:

你可以试试这个:

If input in ['a', 'ab', 'abc', 'abcd', 'abcde']:
    return True
else:
   return False

【讨论】:

以上是关于将一个字符串与另一个字符串的多个子字符串进行比较的主要内容,如果未能解决你的问题,请参考以下文章

将一个表中的多个值与另一个表中的多个值进行比较

ms sql server字符串与另一个具有多个值的字符串进行比较

查找和替换文件中与另一个文件中的字符串匹配的子字符串

将 Python 子字符串与 char 值进行比较

(访问)在文本字段中搜索与另一个表字段中的字符串匹配的字符串,并在子表单中显示这些匹配记录

C ++将字符串的索引与另一个字符串进行比较?