En Python 2.4, ¿cómo puedo despojar a cabo después de caracteres ';'?
-
19-09-2019 - |
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'
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()
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")