web-dev-qa-db-fra.com

Dans Python 2.4, comment puis-je supprimer les caractères après ';'?

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

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

Existe-t-il un moyen plus simple/plus élégant de supprimer les caractères autres que celui-ci:

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'
30
lfaraone

Je recommanderais de dire

line.split(";")[0]

qui vous donnera une chaîne de tous les caractères jusqu’à ce qu’ils n'incluent pas le premier ";" personnage. Sinon ";" caractère est présent, alors il vous donnera la ligne entière.

97
Eli Courtwright

faites juste une scission sur la ligne par commentaire puis obtenez le premier élémenteg

line.split(";")[0]
14
ghostdog74

Pour Python 2.5 ou supérieur, j'utiliserais la méthode partition :

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

Donc, vous aurez envie de scinder la ligne au premier point-virgule, de prendre tout ce qui précède, d’éliminer les blancs qui restent et d’ajouter un nouveau caractère.

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

Liens vers la documentation:

2
tgray

Lecture, division, suppression et jonction de lignes avec newline dans une seule ligne de python:

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

Voici un autre moyen:

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