python - 如何检查一个单词是否包含另一个字符串中的一个字母
问题描述
我正在开发一个程序,在该程序中检查一个单词,例如:“Cat”是否包含一个字母。为此,我尝试过使用if letter in word
,但是当我尝试检查一个单词中的多个字母时它不起作用,因为它会检查该单词是否包含每个字母。我也尝试过像这样使用 re
import re
bad_letters = "AKS"
word = "Sanctuary"
if re.match(bad_letters, word):
print("It is a match")
但它不起作用。
解决方案
这是一个正则表达式解决方案:
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
推荐阅读
- python-3.x - 在 Gearman 中安排作业
- node.js - 如何更改 npm ll 的输出格式?
- android - 菜单文件夹中的 android:actionLayout 创建 Android 操作栏不起作用吗?
- r - 使用 read.csv 导入文件时出现问题
- windows - Windows 10 中的主文件夹是否有别名?
- javascript - 第一个字母重复时名称的格式大小写
- html - 如何在响应式下拉菜单中制作链接到 href 的特定字母或锚标记的一部分
- javascript - PHP 表单执行后的导航
- javascript - 如何将代码和单元测试通过管道传输到 npm test?
- angular - 从模板 *ngfor 获取索引以用于我的打字稿类