使用notepad ++修改python脚本中的索引

时间:2016-07-29 17:18:52

标签: notepad++

我有一个Python脚本,它将数据库中的数据读入列表并填充模板。数据库结构已更改,所以现在我必须为所有索引添加2。有没有办法用notepad ++做这样的事情?

我所拥有的是:

cursor.execute("SELECT * FROM mytable WHERE id = %s",id)
row = cursor.fetchone()
nameSpace = {'valone':str(row[1]),'valtwo':str(row[2]),'valthree':str(row[3]),} #and so on

我需要它:

cursor.execute("SELECT * FROM mytable WHERE id = %s",id)
row = cursor.fetchone()
nameSpace = {'valone':str(row[3]),'valtwo':str(row[4]),'valthree':str(row[5]),} #and so on

有超过一百个变量,所以我不想手动完成。

提前致谢;)

1 个答案:

答案 0 :(得分:1)

您可以使用像\w+\[([0-9]+)]这样的简单正则表达式,并使用PythonScript处理这些匹配,增加组1内的数字。

  • 安装PythonScript
  • 转到插件 - > Python脚本 - > 新脚本
  • 创建新的increment_numbers_2up.py脚本
  • 添加此内容:
def increment_2_up(match):
    return '%s%s]'%(match.group(1), str(int(match.group(2))+2))

editor.rereplace(r'(\w+\[)([0-9]+)]', increment_2_up)

<小时/> 现在,从插件 - &gt;运行脚本 Python脚本 - &gt; 脚本 - &gt; increment_numbers_2up

我得到了这个结果:nameSpace = {'valone':str(row[3]),'valtwo':str(row[4]),'valthree':str(row[5]),} #and so on

模式详情

  • (\w+\[) - 第1组捕获1个字词([a-zA-Z0-9_])和[
  • ([0-9]+) - 第2组捕获1+位数
  • ] - 文字结束]括号。

此处的Python代码 - str(int(match.group(2))+2) - 使用int(match.group(2)解析捕获到第2组的数字,然后添加2,并将值转换为包含str()的字符串。