In Python 2.4, wie kann ich Zeichen Streifen aus nach ‚;‘?
-
19-09-2019 - |
Frage
Lassen Sie uns sagen, dass ich eine Datei bin Parsen, die ;
als Kommentarzeichen verwendet. Ich will nicht, um Kommentare zu analysieren. Also, wenn ich eine Zeile wie folgt aussieht:
example.com. 600 IN MX 8 s1b9.example.net ; hello!
Gibt es eine einfachere / mehr-elegante Art und Weise Zeichen als diese aus anderen abzustreifen:
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'
Lösung
Ich würde empfehlen, sagen
line.split(";")[0]
, die Ihnen eine Zeichenfolge aller Zeichen gibt bis zu, aber nicht einschließlich dem ersten „;“ Charakter. Wenn kein „;“ Zeichen vorhanden ist, dann wird es die gesamte Zeile geben.
Andere Tipps
nur bekomme eine Spaltung auf der Linie durch Kommentar dann das erste Element zB
line.split(";")[0]
Für Python 2.5 oder höher, würde ich verwende die partition
Methode:
rtr = line.partition(';')[0].rstrip() + '\n'
file = open(r'c:\temp\test.txt', 'r')
for line in file: print
line.split(";")[0].strip()
Beim Lesen, Splitting, Strippen und Linien mit Newline alles in einer Zeile von Python-Beitritt:
rtr = '\n'.join(line.split(';')[0].strip() for line in open(r'c:\temp\test.txt', 'r'))
Hier ist eine andere Art und Weise:
In [6]: line = "foo;bar" In [7]: line[:line.find(";")] + "\n" Out[7]: 'foo\n'
Ich habe das nicht mit Python getestet, aber ich ähnlichen Code sonst wo.
import re
content = open(r'c:\temp\test.txt', 'r').read()
content = re.sub(";.+", "\n")