python - 是否有python函数用于过滤if语句中的某些单词
问题描述
我正在尝试制作一个响应命令的不和谐“爸爸机器人”。当有人说“我是”时,它会打印出嗨“无论他们输入什么”,我是爸爸机器人,这很好用,但我的很多朋友都输入了“我”而不是“我”,这意味着我允许这样做好吧,但现在它会触发以“im”结尾的单词,例如他或瞄准。
这是我尝试过的代码,我也尝试过使用 for 循环遍历数组。
im = ["aim", "bim", "cim", "dim", "eim", "fim", "gim", "him", "iim", "jim", "kim", "lim", "mim", "nim", "oim", "pim", "qim", "rim", "sim", "tim", "uim", "vim", "wim", "xim", "yim", "zim"]
#part of a larger if statement
elif ("i'm " in message.content.lower() or "im " in message.content.lower()) and not message.content.lower() in im:
if "i'm" in message.content:
you = message.content.split("i'm")
elif "im" in message.content:
you = message.content.split("im")
elif "Im" in message.content:
you = message.content.split("Im")
else:
you = message.content.split("I'm")
await message.channel.send(f"""Hi{you.pop(1)} I'm Dadbot""")
我也尝试过使用这样的 for 循环
if "im" in message.content:
for x in im:
if im(x) in message.content:
go = 1
break
go = 0
if go == 1:
代码应该忽略任何其他文本,并且应该只响应“im”、“Im”、“I'm”和“I'm”
看起来像这样的东西:
User:
"I'm hungry"
Dad bot:
"Hi hungry I'm Dadbot"
这是我得到的错误:
Traceback (most recent call last):
File "C:\Users\User\AppData\Local\Programs\Python\Python36\lib\site-packages\discord\client.py", line 251, in _run_event
await coro(*args, **kwargs)
File "C:/Users/User/PycharmProjects/dadBot/dadBot.py", line 26, in on_message
elif ("i'm " in message.content.lower() or "im " in message.content.lower()) and not im in message.content.lower():
TypeError: 'in <string>' requires string as left operand, not list
解决方案
我想到了一个像这样的小正则表达式^(im|i\'m)\s+(.*)
例子:
import re
ip = "im hungrey"
list_ip = re.match(r"^(im|i\'m)\s+(.*)",ip, re.IGNORECASE)
if list_ip:
print('Hi '+ list_ip.group(2) + ' '+list_ip.group(1)+ ' Dadbot')
输出:
i/p: "im hungrey"
o/p: Hi hungrey im Dadbot
i/p: "him hi"
o/p: null
i/p: "i'm all"
o/p: Hi all i'm Dadbot
解释:
- 在 python 中使用
re
- regex 进行模式匹配 - 我正在匹配单词并对值进行分组
group(1)
是(im|i\'m)
- 它给了我第一个词group(2)
is(.*)
- 它给出了输入的剩余部分
推荐阅读
- ios - iOS 13 更新在第一次显示时破坏了我的应用程序的键盘
- bash - 如何替换文件名中的文本并将文件移动到不同的目录
- javascript - 如何动态更改对象键?
- python - 通过 API 访问令牌将智能表连接到 Jupyter 时出现 SSL 认证错误
- r - 我做错了什么,抛出“乐趣(文件)错误:不支持的文件格式。” 错误
- java - 用于嵌套 for 循环的 Lambda
- sql - 在给定 IDS 列表的情况下,对表字段中的多个值利用 postgres ILIKE 函数的 SQL 查询
- c++ - 查找用于提升多精度 uint512_t 的 First Set 指令 (ffs)
- typescript - 我如何禁用/处理初始化,toJSON
- uiscrollview - 为什么滚动时 UIScrollView 会颠簸