如何解决如何检查一个单词是否包含另一个字符串的一个字母
我正在研究一个程序,在其中检查一个词,例如:“ Cat”是否包含字母。为此,我尝试使用list1 = ['a','b']
list2 = ['c','d','e']
print([i+j for i in list1 for j in list2])
,但是当我尝试检查单词中的多个字母时它不起作用,因为它会检查单词中是否包含每个字母。我也尝试过使用像这样的re
if letter in word
但它不起作用。
解决方法
这是一个正则表达式解决方案:
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}]",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
,
如果您还想知道字母匹配:
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
,
我相信您想在一个字符串中检查错误的字母,以便您可以这样做:
word = "hello"
string = "EH"
for letter in string:
if letter.lower() in word.lower():
print('success')
else:
print('failure')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。