检查字符串是否只包含Python中某些指定字符的最简单方法是什么?(当然,不使用RegEx或任何东西)
具体来说,我有一个stings列表,我想过滤掉所有这些,除了只由另一个字符串中的任何字母组成的单词.例如,过滤['aba', 'acba', 'caz']虽然'abc'应该给['aba', 'acba'].(z不在abc)
就像只保留使用给定字母可以制作的项目一样.
And*_*ter 12
假设你的例子中的差异是一个错字,那么这应该工作:
my_list = ['aba', 'acba', 'caz']
result = [s for s in my_list if not s.strip('abc')]
Run Code Online (Sandbox Code Playgroud)
结果['aba', 'acba']. 如果要删除的字符串除输入中的字符外只包含字符串,则string.strip(characters)将返回一个空字符串.角色的顺序无关紧要.
你可以使用集合:
>>> l = ['aba', 'acba', 'caz']
>>> s = set('abc')
>>> [item for item in l if not set(item).difference(s)]
['aba', 'acba']
Run Code Online (Sandbox Code Playgroud)
假设您只希望列表中的字符串只包含搜索字符串中的字符,则可以轻松执行
>>> hay = ['aba', 'acba', 'caz']
>>> needle = set('abc')
>>> [h for h in hay if not set(h) - needle]
['aba', 'acba']
Run Code Online (Sandbox Code Playgroud)
如果你不想避免套装,你也可以使用它str.translate.在这种情况下,您将删除搜索字符串中的所有字符.
>>> needle = 'abc'
>>> [h for h in hay if not h.translate(None,needle)]
['aba', 'acba']
Run Code Online (Sandbox Code Playgroud)