Probleme mit split()

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
SteeWeeDee
User
Beiträge: 34
Registriert: Donnerstag 18. September 2008, 14:10

Ich schreibe gerade an einer Implementierung mit der ich aus einer QListBox (Name: clientBox) die Zeile auswähle welche ich anpingen will, auswähle.
Da die Zeile im Format
Host camfuew6.voip (192.168.0.14)
vorliegt dachte ich mir ich splite sie einfach auf und nehm mir den IP Teil zum pingen.

Hier der Programmteil:
def ping(self):
import StringIO
import string

pseudodatei = StringIO.StringIO()

t = self.clientBox.currentText()
ip = t.split()
print ip

Doch beim Ausführen kommt die Fehlermeldung:
Traceback (most recent call last):
File "/home/stephan/gui_test.py", line 240, in ping
ip = t.split()
AttributeError: split


Ich will nach Spaces trennen also muss ich doch nichts angeben. Habe split ja schon öfter verwendet deswegen weiß ich wohl nicht woran es liegt das es nicht funktioniert.

Ich hoffe ihr könnt mir weiter helfen!
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Dann liefert wohl self.clientBox.currentText() keinen String zurück. Mach mal ein print type(t), repr(t) vor dem split.

btw: Bitte beachten: http://www.python-forum.de/faq.php#21

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
SteeWeeDee
User
Beiträge: 34
Registriert: Donnerstag 18. September 2008, 14:10

hatte es schon mit print ausgegeben - aber es war so wie man sich einen String vorgestellt.
Leider war der Type von t ein QString und somit konnte man es nicht splitten :) Aber jetzt gehts.

Noch schnell eine kleine Frage: Gibt es eine invert - Funktion für Listen? Das z.B. hier die IP Adresse an erster Stelle steht und nicht an letzter?
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Meinst du:
s.reverse() reverses the items of s in place
http://docs.python.org/dev/library/stdt ... ence-types

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
SteeWeeDee
User
Beiträge: 34
Registriert: Donnerstag 18. September 2008, 14:10

JA das wars. So jetzt mach ich aber mal wieder alleine weiter :)
Thx
SteeWeeDee
User
Beiträge: 34
Registriert: Donnerstag 18. September 2008, 14:10

reverse() klingt gut aber liefert mir None zurück - eine Idee warum?

Code: Alles auswählen

def ping(self):
        import StringIO
        import string
        
        pseudodatei = StringIO.StringIO()
        
        t = self.clientBox.currentText()
        t = str(t)
        ip = t.split()
        print ip.reverse()
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Ja: reverses the items of s in place
siehe: [wiki]Tutorial/Listen#ReverseListeUmdrehen[/wiki]

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

``reversed()`` gibt hingegen eine invertierte Liste zurück, ohne die ursprüngliche zu verändern.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
BlackJack

Böse Falle: `reversed()` gibt einen Iterator zurück. Da stolpere ich mehr oder weniger regelmässig drüber. :-)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

BlackJack hat geschrieben:Böse Falle: `reversed()` gibt einen Iterator zurück.
Ja, stimmt. Das ärgert mich immer wieder, weil ich es mit ``sorted()`` verwechsle welches eine Liste zurückgibt.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
lunar

@OP
Sag mal, warum so kompliziert?

Wieso implementierst du nicht einfach ein Modell, dass die IP-Adresse in einer separaten Spalte oder z.B. als "UserRole" zurückgibt? Dann kannst du die Anzeige auch mal anpassen, ohne gleiche deine Logik ändern zu müssen.
Antworten