Seite 1 von 1
Datei ab bestimmten Zeichen auslesen
Verfasst: Montag 25. April 2016, 14:25
von Silvio1985
Hallo zusammen,
wahrscheinlich ist es total easy was ich wissen möchten;-) bin aber noch anfänger was das an geht.
ich möchte eine Datei auslesen aber nur ab einem = .
das auslesen der ganzem datei mach ich mit open(file,"r")
hab ihr da eine Lösung für mich!
mfg silvio
Re: Datei ab bestimmten Zeichen auslesen
Verfasst: Montag 25. April 2016, 14:50
von /me
Silvio1985 hat geschrieben:ich möchte eine Datei auslesen aber nur ab einem = .
das auslesen der ganzem datei mach ich mit open(file,"r")
Mit
open liest du eine Datei nicht, sondern öffnest sie nur. Prinzipiell musst du die Datei mit
read (siehe
Methods of File Objects) von Anfang an lesen um die Stelle zu finden an der das gesuchte Zeichen zum ersten Mal auftritt.
Danach liest du dann den Rest der Datei und tust das damit was du dafür vorgesehen hast.
Re: Datei ab bestimmten Zeichen auslesen
Verfasst: Montag 25. April 2016, 23:46
von snafu
Code: Alles auswählen
text = 'ham=spam'
head, sep, tail = text.partition('=')
print(tail) # -> spam
Mal komplett ausformuliert:
Code: Alles auswählen
def lines_after(sep, lines):
for line in lines:
if sep in line:
break
head, sep, tail = line.partition(sep)
yield tail
yield from lines
def main():
with open('septest.txt', 'w') as outfile:
outfile.write('foo\nbar\baz=ham\nspam\neggs\n')
with open('septest.txt') as infile:
result = lines_after('=', infile)
print(''.join(result))
if __name__ == '__main__':
main()
Übrigens: Statt `.partion()` könnte man auch `.index()` nutzen. Ich finde es aber mit `.partition()` schöner.
Re: Datei ab bestimmten Zeichen auslesen
Verfasst: Dienstag 26. April 2016, 00:18
von snafu
Und wenn man ganz sicher gehen will, dann fügt man zu Beginn der `lines_after()`-Funktion noch ein ``lines = iter(lines)`` ein, um zu garantieren, dass man auf einem Iterator arbeitet, da es andernfalls zum Beispiel bei der Übergabe von Listen zu einem unerwarteten Ergebnis kommen würde.