我有一个很长的python脚本。 我想对其进行一些更改。但是它使用2个空格缩进,而我想使用 TAB 或 4个空格缩进。
我知道在编写脚本时如何更改缩进。
工具>>>首选项>>>编辑器>>>高级设置>>>缩进字符
但是它不适用于现有脚本。
那么如何在文件中将缩进更改为4个空格或TAB?
PS: 目前,我没有其他可以使用的编辑器。因此,我只使用spyder。(和Notepad ++)
答案 0 :(得分:2)
如评论中所建议,只需用" "
(4个空格)查找并替换" "
(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
)< / li>
(?: )+
是一个不被捕获的组,它一次或多次重复,并且匹配两个空格因此,总而言之,我将匹配出现在行首的所有空格为2的倍数的纯字符串。那就是我们想要的缩进。
re.sub
的第二个参数是我用来动态生成替换字符串的函数,因为我们希望它具有与原始字符串相同的缩进深度。这发生在gen_replacement_string
中。