如何检查一个单词是否包含另一个字符串中的一个字母
How to check if a word contains one letter from another string
我正在开发一个程序,在该程序中我检查一个词是否包含一个字母,例如:“Cat”。为此,我尝试使用 if letter in word
但是当我尝试检查单词中的多个字母时它不起作用,因为它检查单词是否包含每个字母。我也试过像这样使用 re
import re
bad_letters = "AKS"
word = "Sanctuary"
if re.match(bad_letters, word):
print("It is a match")
但是没用。
如果您还想知道哪个字母匹配:
bad_letters="AKS".lower()
word="Sanctuary".lower()
for blet in bad_letters:
for let in word:
if blet==let:
print("It is a match:",let)
break
这是一个正则表达式解决方案:
import re
bad_letters = "AKS"
word = "Sanctuary"
if re.search(f"[{bad_letters}]", word, re.IGNORECASE):
print("It is a match")
据称它可能比避免正则表达式慢。在这个例子中,这确实是正确的,但只是相当勉强。
$ python3 -mtimeit -s 'bad_letters = "AKSaks"; word = "Sanctuary"' 'any(char in word for char in bad_letters)'
1000000 loops, best of 3: 0.468 usec per loop
$ python3 -mtimeit -s 'bad_letters = "AKS"; word = "Sanctuary"; import re' 're.search(f"[{bad_letters}]", word, re.IGNORECASE)'
1000000 loops, best of 3: 0.622 usec per loop
事实上,在那里测量的一些时间是从错误字符 'AKS'
构建模式 '[AKS]'
并编译正则表达式。如果将其从计时测量中剔除,则预编译的正则表达式很容易胜出。
$ python3 -mtimeit -s 'import re; bad_letters = "AKS"; matcher=re.compile(f"[{bad_letters}]", re.IGNORECASE).search; word = "Sanctuary"' 'matcher(word)'
10000000 loops, best of 3: 0.167 usec per loop
我相信您想检查一个字符串中的错误字母,因此您可以这样做:
word = "hello"
string = "EH"
for letter in string:
if letter.lower() in word.lower():
print('success')
else:
print('failure')
我正在开发一个程序,在该程序中我检查一个词是否包含一个字母,例如:“Cat”。为此,我尝试使用 if letter in word
但是当我尝试检查单词中的多个字母时它不起作用,因为它检查单词是否包含每个字母。我也试过像这样使用 re
import re
bad_letters = "AKS"
word = "Sanctuary"
if re.match(bad_letters, word):
print("It is a match")
但是没用。
如果您还想知道哪个字母匹配:
bad_letters="AKS".lower()
word="Sanctuary".lower()
for blet in bad_letters:
for let in word:
if blet==let:
print("It is a match:",let)
break
这是一个正则表达式解决方案:
import re
bad_letters = "AKS"
word = "Sanctuary"
if re.search(f"[{bad_letters}]", word, re.IGNORECASE):
print("It is a match")
据称它可能比避免正则表达式慢。在这个例子中,这确实是正确的,但只是相当勉强。
$ python3 -mtimeit -s 'bad_letters = "AKSaks"; word = "Sanctuary"' 'any(char in word for char in bad_letters)'
1000000 loops, best of 3: 0.468 usec per loop
$ python3 -mtimeit -s 'bad_letters = "AKS"; word = "Sanctuary"; import re' 're.search(f"[{bad_letters}]", word, re.IGNORECASE)'
1000000 loops, best of 3: 0.622 usec per loop
事实上,在那里测量的一些时间是从错误字符 'AKS'
构建模式 '[AKS]'
并编译正则表达式。如果将其从计时测量中剔除,则预编译的正则表达式很容易胜出。
$ python3 -mtimeit -s 'import re; bad_letters = "AKS"; matcher=re.compile(f"[{bad_letters}]", re.IGNORECASE).search; word = "Sanctuary"' 'matcher(word)'
10000000 loops, best of 3: 0.167 usec per loop
我相信您想检查一个字符串中的错误字母,因此您可以这样做:
word = "hello"
string = "EH"
for letter in string:
if letter.lower() in word.lower():
print('success')
else:
print('failure')