提问者:小点点

Discord.py-'变成\\'我无法再次解码


所以我有一个不和谐机器人,它允许人们像这样从纸牌游戏中命名一张牌:!卡片名称然后机器人从名称构造一个图像URL并将其发布到频道。目前,它非常简单,没有验证或任何东西,但它确实有一个问题我想解决,那就是它不能处理撇号。

如果卡片名称包含撇号(例如"Card's Name"),我的机器人会使用'创建URL。然而,卡片db会将撇号替换为"-"。不幸的是,我没有收到撇号,因此string.替换("'", "-") 不起作用。

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

我想解码/解析它,这样我就可以把它变成“s-name”,但我尝试过的都不起作用。

urllib. parse.decode"不能解码字符串",string.替换("\", "") 什么也没做,所以我现在有点卡住了。

如何将“卡片”变成“卡片”?

这是我现在使用的代码:

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的方法",url被发布到频道https://fiveringsdb.com/bundles/card_images/kitsuki's-method. png而不是https://fiveringsdb.com/bundles/card_images/kitsuki-s-method.png

我希望这有助于澄清任何剩余的困惑。


共1个答案

匿名用户

在我的ipython笔记本中,它运行良好。

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

输出是card-s

编辑:

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

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

但是我仍然无法重现你对'的错误