Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Notepad++ 使用记事本修改python脚本中的索引++;_Notepad++ - Fatal编程技术网

Notepad++ 使用记事本修改python脚本中的索引++;

Notepad++ 使用记事本修改python脚本中的索引++;,notepad++,Notepad++,我有一个Python脚本,它将数据库中的数据读入列表并填充模板。数据库结构已更改,因此现在我必须在所有索引中添加2。有没有办法用记事本++来做这样的事情 我所拥有的是: 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

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

我所拥有的是:

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
有100多个变量,所以我不想手动执行


提前感谢;)

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

  • 安装
  • 转到插件->Python脚本->新脚本
  • 创建一个新的
    increment\u numbers\u 2up.py
    脚本
  • 添加以下内容:


现在,从Plugins->Python script->Scripts->increment\u numbers\u 2up运行脚本

我得到了这个结果:
nameSpace={'valone':str(第[3]行)、'valtwo':str(第[4]行)、'valthree':str(第[5]行)、}#等等

图案细节

  • (\w+\[)
    -第1组捕获1+个单词字符(
    [a-zA-Z0-9\]
    )和a
    [
  • ([0-9]+)
    -第2组捕获1+个数字
  • ]
    -一个文本结尾
    ]
    括号

这里的Python代码-
str(int(match.group(2))+2)
-使用
int(match.group(2)
解析捕获到组2中的数字,然后添加
2
,并使用
str()

将值转换为字符串。您可以设置
行=行[2:]
?您可能可以在记事本++中使用正则表达式搜索和替换。此外,这不是python问题,除非您试图使用python解决它,否则您可以使用“sed”如果您使用的是linux操作系统。@SandepsingRawat you's rightIr如果您想使用python,请将花括号中的文本指定给字符串变量。然后使用re.findall查找所有数字。将它们转换为整数,然后在列表上迭代,并用i+2替换每个数字。这就是我所需要的!我必须将\w改为一个文本,但是,有代码中的其他列表。谢谢!是的,模式可以定制以满足您的需要。很高兴它为您工作。
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)