Python:识别单个字符串中是否存在单词的所有字符

时间:2016-11-19 01:21:42

标签: python string

我是一名python用户。我想检查一个特定的单词是否包含字符串中的字符。

例如我有一个单词" mizaner"。它的所有字符都出现在字符串" randomnizer"。

我可以识别特定子串是否是字符串的一部分,例如。我可以验证是否"随机"是" randomnizer"的一部分。使用 if ' random' ' randomnizer':声明,但我不能对" mizaner"尽管它的所有字符都在" randomnizer"中找到,但字符混乱并且该字不能用作子字符串。有什么建议 ?

3 个答案:

答案 0 :(得分:8)

布尔表达式

set('mizaner') <= set('randomnizer')

将返回True,因为第一个字符串的所有字母都在第二个字符串中。如果第一个字符串中的任何字母不在第二个字符串中,则类似的表达式将返回False

这是有效的,因为将字符串转换为集合可以删除重复的字符,并使字符的顺序无关紧要,这正是您想要的。对于子集关系的集合测试的比较小于或等于。

答案 1 :(得分:1)

要处理字符数重要的情况,而不仅仅是字符存在,您需要:

from collections import Counter

word = "randomnizer"
searchlets = "mizaner"
if not (Counter(searchlets) - Counter(word)):
    # All the letters in searchlets appeared in word

如果计数不重要,正如其他人所指出的那样:

if set(searchlets).issubset(word):

会做到这一点。从理论上讲,使用issubset代替set(searchlets) <= set(word)稍微好一点,因为实现可以选择避免将word转换为set,只需将其短路流即可子集条件在中途变得不可能。在实践中,它looks like CPython internally converts non-set arguments to set anyway,因此除非实施发生变化,否则两种方法大致相同。

答案 2 :(得分:0)

你可以使用:

set(word).issubset(string)

...

word="mizaner"
string="randomnizer"
if set(word).issubset(string):
    print("All characters in word is in string")