【问题标题】:Changing variable name in Spyder or Notepad++在 Spyder 或 Notepad++ 中更改变量名
【发布时间】:2018-04-18 20:50:35
【问题描述】:

我正在使用 Spyder(用于 Python)并且正在寻找一种方法来更改整个代码中的变量名。我知道替换文本功能,但这也会改变文本,我的变量名只是其中的一部分。我从 Matlab 知道这个函数,在 Spyder 或 Notepad++ 中是否有类似的东西?

所以如果我想更改我的变量“data”的名称,它应该替换所有使用数据的地方(也像 data.append 这样的表达式),但不应该更改像“datanew”这样的东西,这是另一个变量

【问题讨论】:

  • 您能添加一些示例行和预期结果吗?如果data 出现在评论中,您是否要更改它?

标签: variables replace notepad++ spyder


【解决方案1】:

不确定是否完全了解您的需求,但我猜您想要(使用 Notepad++):

  • Ctrl+H
  • 查找内容:\bdata\b
  • 替换为:new_name
  • 检查匹配大小写
  • 检查环绕
  • 检查正则表达式
  • 全部替换

说明:

\b      : word boundary, make sure we don't have a word character before
data    : literally "data"
\b      : word boundary, make sure we don't have a word character after

Learn more on wordboundary

为了保留"data",你可以使用negative lookaround

(?<!["'])\bdata\b(?!["'])

【讨论】:

  • 谢谢!这就是我一直在寻找的。即使它也改变了“数据”,如果它是评论中的普通字符串/单词,我认为这是最好的解决方案
【解决方案2】:

(这里是 Spyder 维护者) 这种操作的技术术语是重构,很抱歉告诉你,Spyder 不支持它截至 2017 年 11 月。

【讨论】:

    【解决方案3】:

    您可以在 Notepad++ 中将其替换为以下正则表达式

    (?:"(?:\\.|[^\"])*")\K|(?:\bdata\b)
    

    但有一个障碍 - 它也匹配每个结束 " 后面的空字符串。

    所以你可以分三步使用它

    1. (?:"(?:\\.|[^\"])*")\K|(?:\bdata\b)替换为a_string_you_dont_use

    2. "a_string_you_dont_use替换为"

    3. 用你的新变量名替换a_string_you_dont_use

    测试:regex101

    也许有人可以改进正则表达式,以便您一步完成。第一部分匹配 "" 中的所有内容,并删除与 \K 的匹配,但它留下一个空匹配。第二部分匹配变量本身。

    正则表达式处理"\",但不处理',所以如果你使用它,你必须扩展正则表达式。

    【讨论】:

      猜你喜欢
      • 2014-06-11
      • 2015-10-01
      • 2023-03-04
      • 2012-06-18
      • 2012-01-29
      • 2021-12-24
      • 1970-01-01
      • 2016-01-01
      相关资源
      最近更新 更多