2010-12-03 43 views
6

我在Python中有一些標籤格式化代碼,我在Python中有一些空間格式化的代碼。轉換python文件中的空格?

將代碼集成在一個痛苦之中...我的編輯想要在製表符或空格中工作,但不是兩者兼備。

在linux中是否有一個命令行函數,或者任何會將python代碼格式化爲某種方式的函數?

回答

3

reindent.py是一個漂亮的實用程序腳本,它可以將任何python .py文件轉換爲一個使用4空格縮進和無製表符的文件。

這對於從不同來源「規範化」代碼非常有用,假設您願意遵守4空間標準。 (或者,如果您需要製表符,則可以運行reindent.py,然後執行unix unexpand命令。)

PS。您的Python安裝可能已經在Tools或Examples文件夾中安裝了reindent.py。在Ubuntu上,它由python-examples包提供,位於/usr/share/doc/python2.6/examples/Tools/scripts/reindent.py

1

許多編輯器(例如vi)會在縮進行時將製表符轉換爲空格或從空格轉換製表符。因此,無論您想要設置選項卡設置,然後縮進整個文件1步,然後縮進一步,然後完成。

Vim命令:

1GVG <-- select entire file (i have this bound to CTRL-A) 
>  <-- indent one step 
1GVG <-- select again 
<  <--- unindent one step 
2

'人擴大' 的在Debian

+0

它也在Redhat的coreutils中。另外,`unexpand`可以用另一種方式進行轉換。 – tylerl 2010-12-03 23:39:25

2

一些信息

它在的coreutils您可以使用擴大unexpand這個Unix命令。

通常,如果我在vim中編寫代碼,我會自動將製表符轉換爲空格。

我的〜/ .vimrc看起來是這樣的:

set expandtab 
set tabstop=4 
0

怎麼樣的Perl:perl -pe 's/(.*?)\t/$1.(" " x (4-length($1)%4))/ge' file_with_tabs.txt

蟒蛇(這是從降價的源...):

def _detab_sub(self, match): 
    g1 = match.group(1) 
    return g1 + (' ' * (self.tab_width - len(g1) % self.tab_width)) 
def _detab(self, text): 

    if '\t' not in text: 
     return text 
    return self._detab_re.subn(self._detab_sub, text)[0] 
0

一個好的程序員的編輯器將有一個命令,將製表符轉換爲空格或反之亦然;你也可以在編輯器中使用搜索和替換來完成它。