因此,要使用python验证字符串是另一个字符串的子集,您可以使用set/frozensets
类和issubset
方法 - 仅适用于单个字符,或者您可以使用正则表达式,从一开始就基本上是多个前瞻断言。我想使用正则表达式选项。
不按照下面的方式进行操作(使用遍历字符串并手动进行前瞻断言,这可能会产生一个巨大的字符串,给定我将要处理的大数据,是否有另一种方法可以更简洁/直接地构建此前瞻 - 前进的方式?另一个项目是我不会只使用单个字符。所以前瞻断言所需的数量可能会非常大。
import re
userInput = raw_input()
listOfChars = 'asdfgei'
myRegexString = ''
for i in listOfChars:
myRegexString = myRegexString+'(?=.*'+i+')'
myRegexCompiled = re.compile(myRegexString)
if myRegexCompiled.(userInput):
print True
答案 0 :(得分:3)
如果要验证集合中的所有字符序列是否都存在于给定字符串中,请将all()
与生成器表达式一起使用:
answer = all(word in string for word in bag)
答案 1 :(得分:0)
因此,假设您有两个字符串 - userInput
,可能非常大,而listOfChars
则相对较小。您想检查listOfChars
中是否存在userInput
的每个元素,而不将userInput
转换为set
。
没有必要为此使用正则表达式 - 这样做会更快:
userInput = raw_input()
listOfChars = 'asdfgei'
def containsSubset(large, small):
for element in set(small): # Convert to a set to remove dupes
if not large.contains(element):
return False
return True
return containsSubset(userInput, listOfChars)
这将是O(M * N),其中M是userInput
的大小,N是listOfChars
的大小。