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)