Python 如何轻松检查字符串是否包含不应包含在其中的字符?

Python 如何轻松检查字符串是否包含不应包含在其中的字符?,python,Python,我想检查字符串中是否包含字符 invalid='gghhiijjkkllmmnnooppqqrrsssttuuvvwxxyzz' 我使用for循环天真地做到了这一点: for ch in invalid: if ch in snippet: return False 这是可行的,但我想知道是否有更有效或更优雅的方法来做到这一点 这已经相当有效了,您可能想看看re.search,它经过优化,可以一次搜索所有字符 我还建议这样做,速度非常快,一次完成: invalid =

我想检查字符串中是否包含字符

invalid='gghhiijjkkllmmnnooppqqrrsssttuuvvwxxyzz'

我使用for循环天真地做到了这一点:

for ch in invalid:
    if ch in snippet:
        return False

这是可行的,但我想知道是否有更有效或更优雅的方法来做到这一点

这已经相当有效了,您可能想看看
re.search
,它经过优化,可以一次搜索所有字符

我还建议这样做,速度非常快,一次完成:

invalid = set('gGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ')
for i in snippet:
    if i in invalid:
        return False
如果您愿意,您可以全套购买,但由于转换时间的原因,我怀疑这会更快:

invalid = set('gGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ')
if set(snippet) & invalid:
    return False
如果特别是该字符串,则可以进一步优化:

for i in snippet:
    if 'g' <= i <= 'z' or 'G' <= i <= 'Z':
        return False
代码段中的i的

如果‘g’在中搜索具有的集合是最有效的方法,那么dicts之后就是了

my_set = set(list(invalid))
范例

'o' in my_set

您可以设置为获取两个字符串中的公共字符,并告诉您哪些字符在这两个字符串中是公共的。通过这样做,您可以捕获字符串中所有无效的字符


set(snippet)&set(invalid)

您可以使用这样的集合

invalid = 'gGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ'

snippet = 'gJ'
# this will return True because characters in "snippet" are also present in "invalid"
bool(set(invalid).intersection(set(snippet)))

snippet = 'a'
# this will return False because characters in "snippet2" are not there in "invalid"
bool(set(invalid).intersection(set(snippet)))

它将返回一个列表。我怀疑这是OP想要的。@BenoîtPilatte你是对的。我把问题搞错了。感谢您的捕获。甚至,
返回invalid.isdisjoint(snippet)