You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在discord.py中实现文本去格式化 为特殊符号添加转义反斜杠

Discord Markdown标记转义实现方案

方案1:使用discord.py内置转义工具

discord.py官方已经封装了现成的转义方法,覆盖了所有Discord支持的Markdown格式规则,无需自己处理匹配逻辑,是最稳妥的方案:

import discord

# 基础用法
raw_text = "这是**粗体**、*斜体*、`行内代码`、||剧透||内容"
escaped_text = discord.utils.escape_markdown(raw_text)
# 输出结果:这是\*\*粗体\*\*、\*斜体\*、\`行内代码\`、\|\|剧透\|\|

你还可以通过参数调整转义范围:

  • 传入ignore_links=True:不转义链接里的特殊字符
  • 传入ignore_mentions=True:不转义用户、频道、角色的@提及标记
  • 传入as_needed=True:仅在确实会触发格式渲染的位置转义,减少不必要的反斜杠

方案2:自定义正则转义(适配特殊需求)

如果内置方法不符合你的业务场景,比如你只需要转义部分指定的格式标记,可以自己实现转义逻辑,注意要按标记长度从长到短处理,避免短标记先被转义导致长标记匹配失败:

import re

# 按长度降序排列要转义的Discord格式标记,避免短标记优先转义导致的匹配问题
ESCAPE_PATTERNS = (
    r"```",
    r"***",
    r"**",
    r"*",
    r"`",
    r"~~",
    r"__",
    r"_",
    r"||",
    r"> ",
    r"# ",
)

def custom_escape_md(text: str) -> str:
    # 优先转义文本中本身存在的反斜杠,避免后续转义逻辑失效
    text = text.replace("\\", "\\\\")
    for pattern in ESCAPE_PATTERNS:
        text = re.sub(re.escape(pattern), rf"\\{pattern}", text)
    return text

# 测试用例
test_text = "```\n这是代码块\n``` *这是斜体文本*"
print(custom_escape_md(test_text))
# 输出:\`\`\`\n这是代码块\n\`\`\` \*这是斜体文本\*

内容的提问来源于stack exchange,提问作者Bruce21

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 05:48:04