Pregunta

Digamos que estoy analizar un archivo, que utiliza ; como el carácter de comentario. No quiero para analizar los comentarios. Así que si una línea es el siguiente:

example.com.              600     IN      MX      8 s1b9.example.net ; hello!

¿Hay una manera más fácil / más-elegante para despojar a cabo caracteres que no sea esta:

rtr = ''
for line in file:
    trig = False
    for char in line:
        if not trig and char != ';':
            rtr += char
        else:
            trig = True
    if rtr[max(rtr)] != '\n':
        rtr += '\n'
¿Fue útil?

Solución

Me gustaría recomendar que dice

line.split(";")[0]

que le dará una cadena de todos los caracteres hasta, pero no incluyendo el primer ";" personaje. Si no ";" personaje está presente, entonces se le dará toda la línea.

Otros consejos

Sólo hacer una división en la línea de comentario a continuación, obtener el primer elemento por ejemplo,

line.split(";")[0]

En Python 2.5 o mayor, me gustaría utilizar la partition método :

rtr = line.partition(';')[0].rstrip() + '\n'
file = open(r'c:\temp\test.txt', 'r')
for line in file:   print
   line.split(";")[0].strip()

Por lo que usted desea dividir la línea en el primer punto y coma, tomar todo lo que conoce, despojarse de cualquier espacio en blanco persistente, y anexar un carácter de nueva línea.

rtr = line.split(";", 1)[0].rstrip() + '\n'

enlaces a la documentación:

Reading, división, separación, y las líneas de unión con salto de línea todo en una línea de pitón:

rtr = '\n'.join(line.split(';')[0].strip() for line in open(r'c:\temp\test.txt', 'r'))

Aquí es otra manera:

In [6]: line = "foo;bar"
In [7]: line[:line.find(";")] + "\n"
Out[7]: 'foo\n'

No he probado esto con pitón pero usar un código similar en otro lugar.

import re
content = open(r'c:\temp\test.txt', 'r').read()
content = re.sub(";.+", "\n")
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top