Discord.py - '成为\\',我再也无法解码了

时间:2017-07-01 06:41:48

标签: python python-3.x discord discord.py

所以我有一个不和谐机器人,它允许人们从纸牌游戏中命名一张卡片:!card card name 然后,机器人从名称构造图像URL并将其发布到通道。现在,它非常简单,没有验证或任何东西,但它确实有一个我想修复的问题,即它无法处理撇号。

如果卡片名称包含撇号(例如“卡片名称”),我的机器人会使用%27创建URL。然而,卡片db用“ - ”替换撇号。不幸的是,我没有收到撇号,所以string.replace(“'”,“ - ”)不起作用。

我的IDE在命令数组中正确显示字符串,一旦从中检索它,它就像这样:Card\\'s Name
我假设它总是被转义,但是当它不是原始字符串时,IDE会以解析的方式显示它。

我想解码/解析这个,以便我可以把它变成“卡片名称”,但我尝试过的任何东西都没有。

urllib.parse.decode“无法解码字符串”,string.replace(“\”,“”)没有做任何事情,所以我现在有点困惑。

如何将“card \\”变成“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”,并且该网址以https://fiveringsdb.com/bundles/card_images/kitsuki%27s-method.png而不是https://fiveringsdb.com/bundles/card_images/kitsuki-s-method.png

发布到频道

我希望这有助于消除任何混乱。

1 个答案:

答案 0 :(得分:1)

In my ipython notebook, it works well.

"card\'s".replace("\'", "-")

output is card-s

enter image description here

编辑:

如果您对var是什么感到困惑,可以打印它。然后,使用Escape字符来表示所需的字符。

例如:
enter image description here

<强>更新
str.replace()返回一个新的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"

试验:
enter image description here

但是我仍然无法重现您对%27的错误