Python 不正确地使用转换转义字符的升华命令
我在markdown中使用了一个转义和粘贴命令: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
{ "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
调用之后,只是为了验证事件处理程序或其他一些命令没有摆弄您背后的数据。