Ja, als was auch sonst? Wenn du das in einen Editor schreibst dann tut der Editor und Python das gleiche. Weil Eingabe + Ausgaben eben kein gültiger Python-Code sind.Hyperion hat geschrieben:@Leonidas: Zeile 9 ... nach O'Sullivan wird alles rot - er erkennt das dort wohl als "String-Start-Token".
Wie Text aus einer Datei mit Python auslesen?
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Naja, "namelist" soll ja auch eine Liste und keine Zeichenkette sein, also solltest du es auch als Liste initialisieren
ich glaub ich habs geschnallt!
und anschliessend print namelist eingebe
Code: Alles auswählen
currDir = os.getcwd()
tvshownfo = os.path.join(currDir,'tvshow.nfo')
namelist = []
if os.path.exists(tvshownfo):
tree = etree.parse(tvshownfo)
for actor in tree.findall('//actor'):
for name in actor.findall('name'):
namelist.append(name.text)
print '%s: %s' % (name.tag.capitalize(), name.text)
warum wundert mich das nicht.
jetzt muss ich natürlich den rest ändern, da eine liste natürlich nicht an ein label weitergereicht werden kann in enigma2
EDIT:
so, habs nun als liste erzeugt und dann zurückgewandelt
nun muss ich als nächstes schauen, wie ich nun diesen neuen string nicht in einer zeile erzeugen lassen kann, sondern nach jedem eintrag eine neue zeile beginngen.
sprich jetzt ist es
EDIT2:
und dank tutorial gleich beim ersten anlauf:
jetzt muss ich natürlich den rest ändern, da eine liste natürlich nicht an ein label weitergereicht werden kann in enigma2
Code: Alles auswählen
TypeError: in method 'eLabel_setText', argument 2 of type 'std::string const &'
EDIT:
so, habs nun als liste erzeugt und dann zurückgewandelt
Code: Alles auswählen
namefinal = ', '.join(namelist)
sprich jetzt ist es
so soll es seinDennis Hopper, Clare Carey, Ross McCall, Brian Tee, Arlene Tur, Jocko Sims, Luis Chavez, Nick E. Tarabay, Moran Atias
Dennis Hopper
Clare Carey
Ross McCall
Brian Tee
Arlene Tur
Jocko Sims
Luis Chavez
Nick E. Tarabay
Moran Atias
EDIT2:
und dank tutorial gleich beim ersten anlauf:
Code: Alles auswählen
namefinal = '\n'.join(namelist)
so, hat nun alles wunderbar funktioniert und ich hab auch gleich was neues gelernt!
vielen dank!
nun werd ich zwar glecih mal versuchen müssen das nächste problem zu lösen, aber da weiss ich nicht, ob man mir da hier helfen kann, da ich nicht weiss, ob es in python generell sowas wie ePixmap oder ePicLoad gibt.
ich benutze nämlich nen linux-receiver, der mit dem normalen pixmap aufruf nur 8bit png unterstützt (wie alle dreamboxen).
also muss da was anderes her als PixmapFromFile().
aber falls ihr ein gutes modul gibt, dass mir bilder gut skaliert und dann aufruft
vielen dank!
nun werd ich zwar glecih mal versuchen müssen das nächste problem zu lösen, aber da weiss ich nicht, ob man mir da hier helfen kann, da ich nicht weiss, ob es in python generell sowas wie ePixmap oder ePicLoad gibt.
ich benutze nämlich nen linux-receiver, der mit dem normalen pixmap aufruf nur 8bit png unterstützt (wie alle dreamboxen).
also muss da was anderes her als PixmapFromFile().
aber falls ihr ein gutes modul gibt, dass mir bilder gut skaliert und dann aufruft
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Was genau ist das? (Domäne?)mocca hat geschrieben: ..., da ich nicht weiss, ob es in python generell sowas wie ePixmap oder ePicLoad gibt.
Was ist das? Receiver kenne ich vom TV-Empfang her ... "dreamboxen" sagt mir gar nixich benutze nämlich nen linux-receiver, der mit dem normalen pixmap aufruf nur 8bit png unterstützt (wie alle dreamboxen).
Ich vermute mal, ein Linuxbasierter DVB-Receiver ist gemeint. :o)
http://de.wikipedia.org/wiki/Dreambox
http://de.wikipedia.org/wiki/Dreambox
@mocca: Zum skalieren von Bildern gibt's die `Python Imaging Library`, kurz `PIL`.
ja, von der PIL habe ich gehört.
ist eine sammlung aus modulen, unter anderem JPEGImagePlugin.py
hab es mit mal runtergeladen, muss mich da aber mal durcharbeiten, weil ich noch nicht weiss, wie man die benutzt
hatte gehofft, dass das irgendwie einfacher lösbar ist, aber es scheitert schon am aufrufen eines jpeg, denn die werden ja nativ nicht unterstützt vom ePixmap. png kein problem, aber ich muss das nun umschreiben für jpeg.
zum alten thema nochmal kurz:
das erstellen der liste und dann konvertieren der liste in von mir gewünschte "optik" hat bestens geklappt.
danke dafür.
gibts hier im forum einen bereich, wo man auch ein bisschen enigma2 basiert fragen kann?
das mit den bildern scheint nämlich kniffliger zu sein als gedacht.
viele klassen, wie MediaPixmap laden nämlich die bilder nicht so zuverlässig.
ist eine sammlung aus modulen, unter anderem JPEGImagePlugin.py
hab es mit mal runtergeladen, muss mich da aber mal durcharbeiten, weil ich noch nicht weiss, wie man die benutzt
hatte gehofft, dass das irgendwie einfacher lösbar ist, aber es scheitert schon am aufrufen eines jpeg, denn die werden ja nativ nicht unterstützt vom ePixmap. png kein problem, aber ich muss das nun umschreiben für jpeg.
zum alten thema nochmal kurz:
das erstellen der liste und dann konvertieren der liste in von mir gewünschte "optik" hat bestens geklappt.
danke dafür.
gibts hier im forum einen bereich, wo man auch ein bisschen enigma2 basiert fragen kann?
das mit den bildern scheint nämlich kniffliger zu sein als gedacht.
viele klassen, wie MediaPixmap laden nämlich die bilder nicht so zuverlässig.
sorry, dass ich den thread nochmal hochhole.
aber ich habe nun ja den string mit meinen objekten erzeugt.
nun musste ich aber heute bei nem testdurchlauf feststellen, dass es zu problemen kommt, wenn in diesen non-ascii code ist
aber ich habe nun ja den string mit meinen objekten erzeugt.
nun musste ich aber heute bei nem testdurchlauf feststellen, dass es zu problemen kommt, wenn in diesen non-ascii code ist
kann ich den string filtern lassen, sodass alle nicht ascii zeichen entfernt werden oder noch besser, sodass all nicht ascii ersetzt werden (í zu i, é zu e etc.)?'ascii' codec can't encode character u'\xed' in position 160: ordinal not in range(128)
so, hab grad mal gesucht und im wiki das gefunden [wiki]Von Umlauten, Unicode und Encodings[/wiki]?highlight=%28unicode%29
nehme an, dass ich also nur umwandeln muss. kann ich irgendwie sehen in welches zielformat ich wandeln muss?
die xml sind laut header selbst utf-8.
aber da es zur fehlermeldung kam, nehme ich mal an, dass das system kein utf-8 unterstützt.
sehe ich das richtig?
also nach iso-8859-1 wandeln?
und muss ich den cookie setzen oder reicht es, wenn ich wandle und das system, falls es iso-8859-1 unterstützt kann das dann automatisch lesen?
EDIT:
gerade noch ein problem gefunden.
nutze folgenden code:
nur ist in der tv.nfo aber folgendes drin:
nehme an, dass ich also nur umwandeln muss. kann ich irgendwie sehen in welches zielformat ich wandeln muss?
die xml sind laut header selbst utf-8.
aber da es zur fehlermeldung kam, nehme ich mal an, dass das system kein utf-8 unterstützt.
sehe ich das richtig?
also nach iso-8859-1 wandeln?
und muss ich den cookie setzen oder reicht es, wenn ich wandle und das system, falls es iso-8859-1 unterstützt kann das dann automatisch lesen?
EDIT:
gerade noch ein problem gefunden.
nutze folgenden code:
Code: Alles auswählen
currDir = os.getcwd()
tvnfo = os.path.join(currDir,'tv.nfo')
namelist = []
if os.path.exists(tvshownfo):
# if currPlay is not None:
tree = etree.parse(tvnfo)
for actor in tree.findall('//actor'):
for name in actor.getiterator('role'):
namelist.append(name.text)
namefinal = '\n'.join(namelist)
das führt zu<actor>
<name>Not a regular</name>
<role />
<thumb>http://www.thetvdb.com/banners/actors/80669.jpg</thumb>
</actor>
kann man ihn irgendwie dazu bringen solche fehler zu ignorieren?rolefinal = '\n'.join(rolelist)
TypeError: sequence item 9: expected string, NoneType found
Da gibts mehrere Möglichkeiten:
Das Leben ist kein Wunschkonzert, Python schon eher
Code: Alles auswählen
# das fügt in der Ausgabe eine Leerzeile hinzu, vllt. ja erwünscht
...
namelist.append(name.text || '')
...
# fügt nur Text hinzu, kein leerer String oder None
# mit else könntest Du noch auf den fehlenden Eintrag hinweisen
...
for name in actor.getiterator('role'):
if name.text:
namelist.append(name.text)
...
# das ganze etwas anders gelöst
...
'\n'.join(i for i in namelist if i)
...
# oder mit hässlichem None
...
'\n'.join(str(i) for i in namelist)
...
upps, vllt. so dann:
Code: Alles auswählen
namelist.append(name.text or '')
danke jerch. werd ich gleich mal ausprobieren!
das sieht ganz gut aus. würde das auch bei dem unicode fehler helfen oder wäre das damit nicht automatisch mit gelöst?
das sieht ganz gut aus. würde das auch bei dem unicode fehler helfen oder wäre das damit nicht automatisch mit gelöst?
Code: Alles auswählen
for name in actor.getiterator('role'):
if name.text:
namelist.append(name.text)
Nein, um das Ausgabe-Encoding mußt Du Dich schon selber kümmern. Da xml fast immer uft-8 kodiert daher kommt, dürfte es mit einem namefinal.encode('utf-8') getan sein....würde das auch bei dem unicode fehler helfen oder wäre das damit nicht automatisch mit gelöst?
wollte nur kurz nochmal danke sagen!
das None type problem hat wunderbar geklappt.
und das encoding problem ebenfalls.
wie cih ja oben geschrieben hatte, war ich nicht sicher, ob ich ein cookie setzen muss (scheinbar nicht) und ob ich in das native encoding der box benutzen muss oder ob die box alles kann, solange man ihr sagt, dass es utf-8 ursprünglich war.
offensichtlich letzteres
danke euch!
ich bin sicher, dass ich den thread demnächst wieder hochhole....wäre zu einfach, wenn im rest keine fehler mehr auftauchen würden
das None type problem hat wunderbar geklappt.
und das encoding problem ebenfalls.
wie cih ja oben geschrieben hatte, war ich nicht sicher, ob ich ein cookie setzen muss (scheinbar nicht) und ob ich in das native encoding der box benutzen muss oder ob die box alles kann, solange man ihr sagt, dass es utf-8 ursprünglich war.
offensichtlich letzteres
danke euch!
ich bin sicher, dass ich den thread demnächst wieder hochhole....wäre zu einfach, wenn im rest keine fehler mehr auftauchen würden