[英]How do I easily check whether a string contains a character that should not be in there?
我想檢查一個字符串是否在此字符串中包含一個字符
invalid = 'gGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ'
我正在天真地使用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
發出指令后,用in搜索集合是最有效的方法。
my_set = set(list(invalid))
例
'o' in my_set
您可以設置為獲取兩個字符串中的公共字符,並告訴您兩個字符中的哪些公共字符。 這樣,您可以捕獲字符串中所有無效的字符。
設置(摘要)和設置(無效)
您可以使用這樣的集合
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)))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.