Discord.py - ' 变成 \\' 并且我无法再次将其解码回来
Discord.py - ' becomes \\' and I can't decode it back again
所以我有一个 discord 机器人,它允许人们像这样为纸牌游戏中的纸牌命名:!card card name
然后,机器人根据名称构建图像 URL 并将其发布到频道。现在,它超级简单,不做任何验证或任何事情,但它确实有一个我想解决的问题,那就是它无法处理撇号。
如果卡片名称包含撇号(例如 "Card's Name"),我的机器人会使用 %27 创建 URL。然而,card db 将撇号替换为“-”。不幸的是,我没有收到撇号,所以 string.replace("'", "-") 不起作用。
我的 IDE 正确显示命令数组中的字符串,当我从那里检索它时,它看起来像这样:Card\'s Name
我假设它总是被转义,但是 IDE 在它不是原始字符串时以解析的方式显示它。
我想decode/parse这个,这样我就可以把它变成"card-s-name",但我试过都没有用。
urllib.parse.decode "can't decode string", string.replace("\", "") 什么也没做,所以我现在有点卡住了。
如何将 "card\'s" 变成 "card-s"?
这是我现在使用的代码:
def get_card_url(command):
card_name = ''
for string in command:
string = urllib.parse.unquote(string)
string.replace("'", "-")
if card_name != '':
card_name += '-'
card_name += string.lower()
return "https://fiveringsdb.com/bundles/card_images/" + card_name + ".png"
我 运行 进入错误的卡片称为 "Kitsuki's Method" 并且 url 作为 https://fiveringsdb.com/bundles/card_images/kitsuki%27s-method.png instead of https://fiveringsdb.com/bundles/card_images/kitsuki-s-method.png
发布到频道
我希望这有助于消除任何遗留的困惑。
在我的 ipython 笔记本中,它运行良好。
"card\'s".replace("\'", "-")
输出为card-s
编辑:
如果你对var是什么感到困惑,你可以打印it.And然后,使用转义字符到需要的字符。
例如:
更新:
str.replace() return 一个新的str,但它不会改变旧的str。所以你需要让一个var等于新的str,然后使用var.
def get_card_url(command):
card_name = ''
for string in command:
string = urllib.parse.unquote(string)
string = string.replace("'", "-")
if card_name != '':
card_name += '-'
card_name += string.lower()
return "https://fiveringsdb.com/bundles/card_images/" + card_name + ".png"
测试:
但是我还是无法重现你关于%27
的错误
所以我有一个 discord 机器人,它允许人们像这样为纸牌游戏中的纸牌命名:!card card name
然后,机器人根据名称构建图像 URL 并将其发布到频道。现在,它超级简单,不做任何验证或任何事情,但它确实有一个我想解决的问题,那就是它无法处理撇号。
如果卡片名称包含撇号(例如 "Card's Name"),我的机器人会使用 %27 创建 URL。然而,card db 将撇号替换为“-”。不幸的是,我没有收到撇号,所以 string.replace("'", "-") 不起作用。
我的 IDE 正确显示命令数组中的字符串,当我从那里检索它时,它看起来像这样:Card\'s Name
我假设它总是被转义,但是 IDE 在它不是原始字符串时以解析的方式显示它。
我想decode/parse这个,这样我就可以把它变成"card-s-name",但我试过都没有用。
urllib.parse.decode "can't decode string", string.replace("\", "") 什么也没做,所以我现在有点卡住了。
如何将 "card\'s" 变成 "card-s"?
这是我现在使用的代码:
def get_card_url(command):
card_name = ''
for string in command:
string = urllib.parse.unquote(string)
string.replace("'", "-")
if card_name != '':
card_name += '-'
card_name += string.lower()
return "https://fiveringsdb.com/bundles/card_images/" + card_name + ".png"
我 运行 进入错误的卡片称为 "Kitsuki's Method" 并且 url 作为 https://fiveringsdb.com/bundles/card_images/kitsuki%27s-method.png instead of https://fiveringsdb.com/bundles/card_images/kitsuki-s-method.png
发布到频道我希望这有助于消除任何遗留的困惑。
在我的 ipython 笔记本中,它运行良好。
"card\'s".replace("\'", "-")
输出为card-s
编辑:
如果你对var是什么感到困惑,你可以打印it.And然后,使用转义字符到需要的字符。
例如:
更新:
str.replace() return 一个新的str,但它不会改变旧的str。所以你需要让一个var等于新的str,然后使用var.
def get_card_url(command):
card_name = ''
for string in command:
string = urllib.parse.unquote(string)
string = string.replace("'", "-")
if card_name != '':
card_name += '-'
card_name += string.lower()
return "https://fiveringsdb.com/bundles/card_images/" + card_name + ".png"
测试:
但是我还是无法重现你关于%27