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'
War es hilfreich?

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

So werden Sie wollen die Linie auf dem ersten Semikolon zu trennen, nehmen Sie alles, bevor es, abstreifen alle verbliebenen Leerzeichen, und fügen Sie eine neue Zeile Zeichen.

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

Links zu Dokumentation:

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")
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top