我怎样才能替换不止一件事,例如我做了 .replace("dnd", "Do Not Disturb") 但是我怎样才能对“online”、“offline”和“idle”做同样的事情,所以我可以在里面放表情符号。
embed.add_field(name="**•Status•**", value=str(member.status).replace("dnd", "Do Not Disturb") , inline=True)
答案 0 :(得分:3)
您可以像其他答案一样简单地链接 replace
方法,尽管我认为这是一种丑陋的方式。
你可以有一个将状态映射到实际名称的字典,然后简单地使用状态获取值:
status_dict = {
"online": "Online",
"offline": "Offline",
"idle": "Idle",
"dnd": "Do Not Disturb",
"invisible": "Invisible"
} # Change the values accordingly
status = status_dict[str(member.status)]
embed.add_field(name="**Status**", value=status)
答案 1 :(得分:0)
这看起来更像是一个 python 问题而不是 discord.py 但是...
str.replace
用第二个参数替换所有出现的子字符串,并返回新字符串。由于它返回新字符串,因此您可以在另一个字符串上堆叠一次,从而可以执行以下操作:
str(member.status).replace("dnd", "Do Not Disturb").replace("idle", "Idle").replace("online", "Online")
然而,这有点笨重,所以我会用替换创建一个列表,然后遍历列表并替换。
mstatus = str(member.status)
l = [
["dnd", "Do Not Disturb"],
["idle", "Idle"],
["online", "Online"]
]
for status in l:
mstatus = mstatus.replace(status[0], status[1])
答案 2 :(得分:0)
你基本上可以做同样的事情,因为 .replace()
会返回一个字符串。
status = str(member.status)
formatted = status.replace("dnd", "Do Not Disturb").replace("online", "SomethingOnline").replace("offline", "SomethingOffline")
embed.add_field(
name="**•Status•**",
value=str(member.status).replace("dnd", "Do Not Disturb"),
inline=True
)