Em Python 2.4, como posso tirar fora caracteres após ';'?
-
19-09-2019 - |
Pergunta
Vamos dizer que eu sou analisar um arquivo, que usa ;
como o caractere de comentário. Eu não quero comentários de análise. Então, se eu uma linha esta aparência:
example.com. 600 IN MX 8 s1b9.example.net ; hello!
Existe uma maneira mais fácil / mais-elegante para tirar caracteres fora Outro que isso:
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'
Solução
eu recomendo dizendo
line.split(";")[0]
que lhe dará uma seqüência de todos os caracteres até, mas não incluindo o primeiro ";" personagem. Se não ";" personagem está presente, então ele vai te dar toda a linha.
Outras dicas
apenas fazer uma divisão na linha de comentário em seguida, obter o primeiro elemento eg
line.split(";")[0]
Para Python 2.5 ou superior, gostaria de usar a 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()
Leitura, rachar, stripping, e juntando-se com linhas de nova linha tudo em uma linha de pitão:
rtr = '\n'.join(line.split(';')[0].strip() for line in open(r'c:\temp\test.txt', 'r'))
Aqui é uma outra maneira:
In [6]: line = "foo;bar" In [7]: line[:line.find(";")] + "\n" Out[7]: 'foo\n'
Eu não testei isso com python, mas eu usar código semelhante mais onde.
import re
content = open(r'c:\temp\test.txt', 'r').read()
content = re.sub(";.+", "\n")