python - 如何删除Python中单词之间的多个空格,而不需要前导空格

标签 python sublimetext sublime-text-plugin

我正在编写一个简单的 Sublime Text 插件,以修剪单词之间多余的、不必要的空格,但不触及前导空格,以免弄乱 Python 格式。

我有:

[spaces*******are********here]if****not***regions***and**default_to_all:

并且想要得到:

[spaces***are***still****here]if not regions and default_to_all:

思考

regions = view.find_all('\w\s{2,}\w')
view.erase(edit, region)

但它也删除了第一个和最后一个字母。

最佳答案

对于不匹配的前导空格意味着您想要匹配非空格字符后面的多个空格(并将其替换为单个空格),因此您可以替换 (?<=\S) +(?=\S)带有单个空格“”。

说明:

(?<=\S) +(?=\S)
(?<=              Positive look-behind, which means preceded by...
    \S                non-space character
      )           end of look-behind group
        +         more than 1 space
         (?=\S)   Positive look-ahead, which means followed by...
                      non-space character
                  end of look-ahead group

这应该很容易理解。不过,您可能需要对尾随空格处理进行一些调整。

请参阅“regular expressions 101”了解更多信息。

但是,正如关于您的意图的旁注: 这不是重新格式化代码的可靠方法。除了前导空格之外,还有许多重要的多重空格情况。最明显的一个是字符串文字中的空格。

关于python - 如何删除Python中单词之间的多个空格,而不需要前导空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59706997/

相关文章:

Python Flask 应用程序抛出 RuntimeError : working outside of request context

sublimetext3 - 用双向文本解决 Sublime Text 中的波斯字符

regex - 如果不存在空格,请在符号后添加空格?

coldfusion - Sublime Text 3 - 包控制 : Removed directory for orphaned package ColdFusion

go - 在 Sublime (Golang)中重命名变量/函数的常见做法是什么?

python - pyglet 无法绘制到第二个显示器上的窗口

python - 如何在 Python 中处理数据中的 NaN 值?

VSCode 中的 Python : How do you run a previous command?

Gtk 消息 : Failed to load module "canberra-gtk-module" Unable to connect to dbus - Sublime text

sublimetext3 - 是否有任何 Sublime Text 包彩虹括号?