2016-07-29 47 views
1

我有一個Python腳本,它將數據從數據庫讀入列表並填充模板。數據庫結構發生了變化,現在我必須將2添加到所有索引。有沒有辦法使用記事本++做這樣的事情?使用記事本++修改python腳本中的索引

我所擁有的是一樣的東西:

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

你可以設置'row = row [2:]'? – dashiell

+0

你可以使用正則表達式搜索並替換爲notepad ++。此外,這不是一個蟒蛇的問題,除非你試圖解決它**使用Python ** –

+0

你可以使用「sed」,如果你使用的是Linux操作系統。 – vjain419

回答

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) 


現在,從 運行腳本插件 - > 的Python腳本 - > 腳本 - > 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) - 解析捕獲到第2組與int(match.group(2)數字,然後添加2,並且該值投射到與str()的字符串。

+1

這就是我所需要的!我不得不改變文字的\ w,但是,代碼中還有其他列表。 謝謝! –

+0

是的,這個模式可以根據你的需要進行定製。很高興它對你有效。 –