Python 不正确地使用转换转义字符的升华命令

Python 不正确地使用转换转义字符的升华命令,python,regex,windows,sublimetext3,Python,Regex,Windows,Sublimetext3,我在markdown中使用了一个转义和粘贴命令: { "keys": ["ctrl+shift+v"], "command": "escape_and_paste", "args": { "\\": "\\\\", "_" : "\\_", "*" : "\\*" } } 实际命令定义为: import sublime import sublime_plugin class EscapeAndPasteCommand

我在markdown中使用了一个转义和粘贴命令:

{ "keys": ["ctrl+shift+v"], 
    "command": "escape_and_paste", 
    "args": {
        "\\": "\\\\",
        "_" : "\\_",
        "*" : "\\*"
    }
}
实际命令定义为:

import sublime
import sublime_plugin

class EscapeAndPasteCommand(sublime_plugin.TextCommand):
    def run(self, edit, **kwargs):
        # Get the clipboard text
        originalText = textToPaste = sublime.get_clipboard() 

        # Use the arguments as a translation table
        textToPaste = textToPaste.translate(str.maketrans(kwargs))

        # Place the text back into the clipboard and paste in place
        sublime.set_clipboard(textToPaste)
        self.view.run_command("paste")

        # Restore the original text to the clipboard
        sublime.set_clipboard(originalText)
它应该做的是用反斜杠转义反斜杠、下划线和星号。但是,它对如下文本有奇怪的影响:

“skyling\sdfds和\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\。不太清楚为什么

当我直接在Python中运行这个测试时,我没有发现这个问题

textToPaste = 'skylling\sdfds and _adst_'
escapay = {
    "\\": "\\\\",
    "_": "\\_",
     "*": "\\*"
 }
print(textToPaste.translate(str.maketrans(escapay)))

skylling\\sdfds and \_adst\_

这是因为我的参数是如何发送到my py sublime命令的,还是因为对
translate()
的工作原理有误解?运行Sublime Text 3 build 3143。

这似乎适用于我在build 3143中的工作,正如您所说的,而不是您如何看待它。您的问题看起来可疑地像
translate
方法进行多次传递,或者在替换重叠时对输入顺序敏感,但我似乎无法让它以这种方式失败。你有没有在一个干净的还原环境中尝试过这个,看看是否与其他东西有一些奇怪的相互作用?奇怪的是,我记得这不是一个问题,只是在最近几个月才出现的东西。python是独立于Sublime的,还是会对我在计算机上更新python作出反应。我已经有一年多的时间了,所以我没有太多可以恢复的东西。我将尝试另一个系统,看看会发生什么;它忽略外部python安装。要检查的内容可能包括
print(originalText)
print(textToPaste)
translate
调用之后,只是为了验证事件处理程序或其他命令没有在背后摆弄数据。这似乎在构建3143时适用,正如您所说的,而不是您所看到的。您的问题看起来可疑地像
translate
方法进行多次传递,或者在替换重叠时对输入顺序敏感,但我似乎无法让它以这种方式失败。你有没有在一个干净的还原环境中尝试过这个,看看是否与其他东西有一些奇怪的相互作用?奇怪的是,我记得这不是一个问题,只是在最近几个月才出现的东西。python是独立于Sublime的,还是会对我在计算机上更新python作出反应。我已经有一年多的时间了,所以我没有太多可以恢复的东西。我将尝试另一个系统,看看会发生什么;它忽略外部python安装。要检查的内容可能包括
print(originalText)
print(textToPaste)
translate
调用之后,只是为了验证事件处理程序或其他一些命令没有摆弄您背后的数据。