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'
Foi útil?

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()

Então, você vai querer dividir a linha no primeiro ponto e vírgula, tirar tudo antes dela, tira fora qualquer espaço em branco persistente, e acrescentar um caractere de nova linha.

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

links para documentação:

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")
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top