我有一个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
有超过一百个变量,所以我不想手动完成。
提前致谢;)
答案 0 :(得分:1)
您可以使用像\w+\[([0-9]+)]
这样的简单正则表达式,并使用PythonScript处理这些匹配,增加组1内的数字。
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()
的字符串。