2010-12-03 15 views
6

Tengo un código con formato de tabulación en python y tengo un código con formato de espacio en python.convirtiendo espacio en blanco en archivos Python?

Integrando el código en un problema ... mi editor quiere trabajar en pestañas o espacios, pero no en ambos.

¿Hay una función de línea de comandos en Linux o, bueno, cualquier cosa que convierta el formato de código python de una manera u otra?

Respuesta

3

reindent.py es una ingeniosa secuencia de comandos de utilidad que convierte cualquier archivo python .py en uno con sangrías de 4 espacios y sin pestañas.

Esto es útil para "normalizar" el código de fuentes dispares, suponiendo que esté dispuesto a establecerse en el estándar de 4 espacios. (O, si desea pestañas, puede ejecutar reindent.py seguido del comando unix unexpand).

PS. Su instalación de Python puede tener reindent.py ya instalado en una carpeta de Herramientas o Ejemplos. En Ubuntu lo proporciona el paquete python-examples, y se encuentra en /usr/share/doc/python2.6/examples/Tools/scripts/reindent.py.

1

Muchos editores (vi, por ejemplo) convertirán pestañas en espacios o desde espacios cuando usted sangra una línea. Así que establezca las configuraciones de pestañas como desee, luego sangría todo el archivo 1 paso, y luego desinscriba un paso, y estará listo.

comandos de Vim:

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

'hombre expandir' algo de información

está en coreutils en Debian

+0

También está en coreutils en Redhat. Además, 'unexpand' para convertir de la otra manera. – tylerl

2

Puede utilizar ampliar y unexpand comandos Unix para esto.

Por lo general, si codigo en vim, por ejemplo, tengo automáticamente convertir pestañas en espacios.

mi ~/.vimrc se ve algo como esto:

set expandtab 
set tabstop=4 
0

¿Qué hay de Perl: perl -pe 's/(.*?)\t/$1.(" " x (4-length($1)%4))/ge' file_with_tabs.txt

pitón (esto es desde la fuente de Markdown ...):

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

Un buen editor de programadores tendrá un comando que convierta las pestañas en espacios o viceversa; también puede hacerlo con buscar y reemplazar en el editor.

Cuestiones relacionadas