In Python 2.4, come posso togliere i caratteri dopo ';'?
-
19-09-2019 - |
Domanda
Diciamo che sto analisi di un file, che utilizza ;
come il carattere di commento. Non voglio analizzare commenti. Quindi, se ho una linea simile a questa:
example.com. 600 IN MX 8 s1b9.example.net ; hello!
C'è un / modo più facile ed elegante per mettere a nudo i caratteri fuori altro che questo:
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'
Soluzione
Mi consiglia di dire
line.split(";")[0]
che vi darà una stringa di tutti i caratteri fino a, ma non incluso il primo ";" carattere. Se nessun ";" personaggio è presente, allora vi darà l'intera linea.
Altri suggerimenti
Basta fare una spaccatura sulla linea da commentare quindi ottenere il primo elemento ad esempio
line.split(";")[0]
Per Python 2.5 o superiore, vorrei utilizzare il partition
metodo :
rtr = line.partition(';')[0].rstrip() + '\n'
file = open(r'c:\temp\test.txt', 'r')
for line in file: print
line.split(";")[0].strip()
Reading, splitting, strippaggio, e unendo linee con nuova riga su una sola riga di pitone:
rtr = '\n'.join(line.split(';')[0].strip() for line in open(r'c:\temp\test.txt', 'r'))
Ecco un altro modo:
In [6]: line = "foo;bar" In [7]: line[:line.find(";")] + "\n" Out[7]: 'foo\n'
Non ho ancora testato questo con Python, ma ho utilizzare codice simile altrove.
import re
content = open(r'c:\temp\test.txt', 'r').read()
content = re.sub(";.+", "\n")