簡體   English   中英

如何輕松檢查字符串是否包含不應包含在其中的字符?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM