ich lese mit folgendem Code eine Datei ein und speichere die Zeilen in einer Liste:
Code: Alles auswählen
with open ("dateiname.xml") as xml:
liste = xml.readlines()Code: Alles auswählen
for line in liste:
print lineCode: Alles auswählen
with open ("dateiname.xml") as xml:
liste = xml.readlines()Code: Alles auswählen
for line in liste:
print lineIch bin ein ziemlicher Anfänger und das ist mir nicht klar, nein. Ich weiß was ein Parser ist, aber nicht warum ich ihn hier verwenden sollte.BlackJack hat geschrieben:Nur so wegen der Namen: Dir ist klar das man XML-Dateien nicht wie Textdateien verarbeiten sollte, sondern einen XML-Parser verwenden sollte wenn man tatsächlich etwas mit dem Inhalt der Datei anfangen möchte!?
Damit du einfach dem Parser sagen kannst "Gib mir mal Info x von Ort y" und dich nicht selbst mit der Programmierung des Parsens herumschlagen musst.user1370514405 hat geschrieben: Ich bin ein ziemlicher Anfänger und das ist mir nicht klar, nein. Ich weiß was ein Parser ist, aber nicht warum ich ihn hier verwenden sollte.
Code: Alles auswählen
# Datei einlesen und in Liste speichern
with open("file.txt") as txt:
source = txt.readlines()
# Zeilen verändern
for line in source:
line = re.sub(pattern, '', line)
Code: Alles auswählen
sys.stdout.writelines(line)Code: Alles auswählen
for line in source:
sys.stdout.writelines(line)Code: Alles auswählen
>>> data = [1,2,3]
>>> for a in data:
... a = a**2
... print a
...
1
4
9
>>> print data
[1, 2, 3]Code: Alles auswählen
>>> data = [[1], [2], [3]]
>>> for a in data:
... a[0] = a[0]**2
... print a
...
[1]
[4]
[9]
>>> print data
[[1], [4], [9]]
Das ist ja gerade das verwirrende, es gibt eben *unveränderbare* Objekte, wie Integer und Strings. Und wenn ich von diesen einen anderen Wert benötige (errechnet habe, wie auch immer...) dann verweise ich auf ein anderes Objekt, mit einem anderen Wert.Es ist ein Unterschied ob man einen Namen neu bindet, oder ein Objekt *verändert*.
Code: Alles auswählen
for place, line in enumerate(source):
line = re.sub(pattern, '', line)
source[place] = lineCode: Alles auswählen
a_re = re.compile(pattern)
modified_lines = (a_re.sub('', line) for line in source)Ich werde in Zukunft wohl auch lieber mit PERL arbeiten.BlackJack hat geschrieben:Das ist eine für Python sehr unübliche Lösung.