En Python 2.4, comment puis-je enlever les caractères après « ; »?
-
19-09-2019 - |
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'
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()
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")