Question

Disons que je suis analyse d'un fichier, qui utilise ; comme caractère de commentaire. Je ne veux pas analyser les commentaires. Donc, si je une ligne ressemble à ceci:

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

Y at-il un moyen plus facile / plus-élégante façon de dépouiller les caractères sur autre que ceci:

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'
Était-ce utile?

La solution

Je vous recommande de dire

line.split(";")[0]

qui vous donnera une chaîne de tous les caractères jusqu'à, mais non compris le premier « ; » personnage. Sinon ";" caractère est présent, il vous donnera la ligne.

Autres conseils

suffit de faire une scission sur la ligne par commentaires, puis obtenir le premier élément par exemple,

line.split(";")[0]

Pour Python 2.5 ou plus, j'utiliser le partition procédé :

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

Vous aurez envie de diviser la ligne sur le premier point-virgule, prendre tout devant elle, dépouiller les espaces blancs persistante, et ajouter un caractère de nouvelle ligne.

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

Liens vers Documentation:

Lecture, fractionnement, extraction, et des lignes de jonction avec saut de ligne en une seule ligne de python:

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

Voici une autre façon:

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

Je n'ai pas testé avec python mais j'utiliser un code similaire ailleurs.

import re
content = open(r'c:\temp\test.txt', 'r').read()
content = re.sub(";.+", "\n")
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top