Pythonchallenge Level3
``zahl = results[-1]`` um auf den letzten Match zuzugreifen ist vielleicht etwas direkter und eleganter als die Schleife in den Zeilen 13-14.
Code: Alles auswählen
import zipfile
import re
stri = ""
zahl = "90052"
zip_datei = zipfile.ZipFile("C:\Data\Pythonchallenge\channel.zip")
datei_anzahl = len(zip_datei.namelist()) - 1 #minus Readme.txt
print datei_anzahl
for one in range(datei_anzahl):
code = zip_datei.read("%s.txt" %zahl) #Dateiinhalt
stri += zip_datei.getinfo("%s.txt" %zahl).comment #Banner
a = re.compile(r"([0-9]+)") #nächste Datei
results = re.findall(a,code) #nächste Datei
for two in results:
zahl = two
print zahl
print stri
ende = raw_input()
Mich würde viel mehr interessieren warum das Programm hier in der IDLE funktioniert, aber nicht in der Windows Eingabeaufforderung...
Jemand eine Idee?
Danke!
Na dann prüft man halt ob es Treffer gab, oder nicht bevor man drauf zu greift, oder benutzt den `IndexError` gleich als Abbruch für die Schleife.
Was heisst "nicht funktionieren" denn genau? Explodiert der Rechner?
Was heisst "nicht funktionieren" denn genau? Explodiert der Rechner?
Dann lass doch erstmal den Doppelklick weg und starte es direkt in der Eingabeaufforderung.
Mit dem `IndexError` als "Abbruchbedingung":
Mit dem `IndexError` als "Abbruchbedingung":
Code: Alles auswählen
import re
import sys
import zipfile
archive = zipfile.ZipFile('channel.zip')
try:
number = '90052'
while True:
filename = number + '.txt'
sys.stdout.write(archive.getinfo(filename).comment)
number = re.findall('([0-9]+)', archive.read(filename))[-1]
except IndexError:
pass
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Die Lösung steht seit Jahren in unseren FAQ.SchneiderWeisse hat geschrieben:Ich mach einen doppelklick, die Eingabeaufforderung öffnet sich und schließt sich auch gleich wieder...
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Code: Alles auswählen
File "level6.py", line 11
SyntaxError: Non-ASCII character '\xe4' in file level6.py on line 11, but
oding declared; see http://www.python.org/peps/pep-0263.html for details
Was ist hier das Problem?
Vielen Dank!
also ich bedanke mich recht herzlich für die Hilfe!!!
Besonders das letzte Beispiel von BlackJack hat mir sehr weitergeholfen und mir einen Einblick gegeben, wie man klarer und kürzer programmieren kann.
Vielen Dank!
So funktioniert es, nur verstehe ich nicht warum er mir bei der anderen Version diese Fehlermeldung ausgibt...
Besonders das letzte Beispiel von BlackJack hat mir sehr weitergeholfen und mir einen Einblick gegeben, wie man klarer und kürzer programmieren kann.
Vielen Dank!
Code: Alles auswählen
import zipfile
import re
import sys
zip_datei = zipfile.ZipFile("C:\Data\Pythonchallenge\channel.zip")
try:
zahl = "90052"
while True:
file_name = zahl + ".txt"
sys.stdout.write(zip_datei.getinfo(file_name).comment)
zahl = re.findall(r"([0-9]+)",zip_datei.read(file_name))[-1]
except IndexError:
pass
ende = raw_input()
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Du musst das Encoding angeben, also etwa ``# -*- coding: utf-8 -*-`` oben im Skript.SchneiderWeisse hat geschrieben:Was mir nicht besonders viel sagt...
Was ist hier das Problem?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice