簡體   English   中英

在Spyder中更改python腳本的縮進

[英]Change indentation of python script in Spyder

我有一個很長的python腳本。 我想對其進行一些更改。 但是它要使用2個空格縮進,而我想使用TAB4個空格縮進。

我知道在編寫腳本時如何更改縮進。

工具>>>首選項>>>編輯器>>>高級設置>>>縮進字符

但這不適用於現有腳本。

那么如何在文件中將縮進更改為4個空格或TAB?

PS: 目前,我沒有其他編輯可以使用。 因此,我只使用spyder。(和Notepad ++)

解決方案1)

如注釋中所建議,只需用" " (4個空格)查找並替換" " (2個空格)。 這也可以替換代碼中的雙倍空格,但這是最簡單,最快的解決方案。 提防帶有雙空格的硬編碼字符串,這些字符串會損壞。

解決方案2)

正則表達式! 在其他腳本(或控制台)中,運行:

import re
with open('my_script_with_2_spaces.py') as fp:
  text = fp.read()

def gen_replacement_string(match):
  print(match)
  print(match.groups())
  return '    '*(len(match.groups()[0])//2)

with open('my_script_with_4_spaces.py', 'w') as fp:
  fp.write(re.sub(r'^((?:  )+)', gen_replacement_string, text, flags=re.MULTILINE))

正則表達式做什么?

  • ^匹配行的開頭(需要MULTILINE標志)
  • (...)是需要考慮... (其內容)作為一組,所以然后我可以很容易地檢索它(它是match.groups()[0]gen_replacement_string
  • 內部(?: )+是一個不被捕獲的組,被一次或多次重復,與兩個空格匹配

因此,總而言之,我將匹配出現在行首的所有空格為2的倍數的純空格字符串。 那就是我們想要的縮進。

re.sub將我用來動態生成替換字符串的函數作為第二個參數,因為我們希望它具有與原始字符串相同的縮進深度。 這發生在gen_replacement_string

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM