Python 3: Das Konvertieren Eines Tupels In Einen String
Ich habe den folgenden code:
var_one = var_two[var_three-1]
var_one = "string_one" + var_1
Und ich brauche, um Folgendes zu tun:
var_four = 'string_two', var_one
Jedoch, dies gibt den folgenden Fehler zurück:
TypeError: Can't convert 'tuple' object to str implicity
Habe ich Sachen versucht wie str(var_one)
und mit strip
aber diese hat nicht funktioniert.
Was kann ich tun, um die Ergebnisse, die ich benötigen?
BEARBEITEN - Hier werden, was die Variablen enthalten:
var_one: neue variable
var_two: Tupel
var_three: integer
var_four: neue
EDIT2:
Die Zeile im Programm, die macht der Fehler ist: os.system(var_four)
Sind wir annehmen
Ähm... was ist in diesen Variablen?
Hinzugefügt, was die Variablen sind, in Frage zu stellen.
Wie bereits in der Frage, mit
var_one
ist ein Tupel? Können Sie uns ein reales Beispiel für deinen code? Die Informationen in diesem link helfen? stackoverflow.com/questions/3886669/tuple-to-stringÄhm... was ist in diesen Variablen?
Hinzugefügt, was die Variablen sind, in Frage zu stellen.
Wie bereits in der Frage, mit
str(var_one)
funktioniert nicht in dieser situation.
InformationsquelleAutor Eden Crow | 2012-02-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dein code sieht in Ordnung ist.
Versuchen
import pdb; pdb.set_trace()
in Ihrem Programm, um zu sehen, wenn Sie können, suchen Sie die Zeile, die Auslösung der Fehler.EDIT: Sie verwenden möchten
''.join(var_four)
zu konvertierenvar_four
in eine Zeichenfolge, bevor Sie es zu was auch immer es ist Sie wollen, es zu benutzen. Bitte beachten Sie, dass dies tatsächlich erstellen Sie eine neue Zeichenfolge und nicht überschreibenvar_four
. Sehen Python 3 string.join () - äquivalent?Auch, Sie sollten mit den
subprocess
Modul stattos.system
. Finden Sie die Python 3.x Dokumentation.InformationsquelleAutor Edwin
Sie können mir nicht sagen wie zu Leben! 😉
InformationsquelleAutor prelic
Was du geschrieben hast ist in Ordnung:
Das problem ist, dass irgendwo sonst in Ihrem code, die Sie verwenden
var_four
als Zeichenfolge, wo es sein sollte ein Tupel.BTW, ich denke, es ist übersichtlicher, setzen Sie Klammern um Tupel wie folgt; sonst hätte ich dazu neigen zu denken, Sie sind in tuple unpacking.
EDIT: Es gibt alle Arten von Möglichkeiten, um zu verbinden und format-strings -- Python ist gut. In etwas absteigender Reihenfolge der Allgemeingültigkeit:
Aktualisiert die Frage mit der Zeile, die den Fehler verursacht.
Es ist kein string. Sie definiert es nicht ein string sein. Es ist ein Tupel. Sie können konvertieren eine Zeichenfolge in einer beliebigen Anzahl von Möglichkeiten, je nachdem, wie Sie es wollen umgewandelt.
es sieht aus wie Sie wollen
"".join(var_four)
d.h. Sie verketten möchten Sie die Elemente -- aber dannsubprocess.Popen
ist die empfohlene Methode zum Aufruf externer Programme aus Python.Also mit der
,
in variable Zuordnung bewirkt, dass es zu einem Tupel? Dann wie mache ich einen string hinzufügenstring_two
undvar_one
zusammen? EDIT: Ninja würde - haben Sie einen Blick auf"".join(var_four)
InformationsquelleAutor Katriel
os.system
erwartet einen string, wird ausführen in der shell, aber Sie geben es einem Tupel statt.Sich vorstellen, wir möchten, führen Sie den Befehl
rm -rf /home/mike
. Könnten Sie etwas tun, wiewas Sie wollen zu tun, sondern ist
die Zeichenfolge zusammenstellen. Sie sind wahrscheinlich denken Komma montiert str-ed-Objekte zusammen mit Leerzeichen dazwischen, aber das ist nur für
print
; es ist nicht, wie strings funktionieren im Allgemeinen.Aber warten, es gibt noch mehr! Sie nie verwenden möchten
os.system
, vor allem, wenn du gehst zu bauen Befehle. Es ruft die shell (die stellt unncessary Sicherheitsrisiken und andere Strafen) und hat eine starre API. Verwenden Sie stattdessen diesubprocess
Modul.InformationsquelleAutor Mike Graham
Dies scheint zu einfach zu sein, aber dies funktioniert in Python 3.6
InformationsquelleAutor Scott Skiles