Print nur innerhalb [``]

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
denis22934
User
Beiträge: 9
Registriert: Freitag 11. September 2020, 16:10

Hey,

ich versuche mich ein wenig an Python.

Meine Frage: Ich lese etwas aus und lasse es printen via (~~ ist Persönliche Information) ("printing" ist eine Variable)
for current_~~ in printing:
print(current_~~.ipv4)
Es funktioniert auch, doch ich bekomme anstatt der Ipv4 etwas im Format: [`Ipv4`]
Jetzt... ist es möglich nur den Inhalt also nur die Ipv4 zu printen ohne die "[" und "`" ?

Vielen Dank im Voraus.
Mit freundlichen Grüßen
Denis
Benutzeravatar
ThomasL
User
Beiträge: 1367
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Versuche dich nicht nur ein wenig sonder besser etwas mehr mit Python.
Was für ein Datentyp ist denn [ ] in Python?
Und was für ein Datentyp ist etwas in einfachen oder doppelten Anführungszeichen?
Wenn du das verstanden hast, kennst du auch die Antwort auf deine Frage.
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

Bitte zeige vollständig lauffähigen Code, der den Fehler zeigt und eine genaue Beschreibung was du statt dessen willst.
Wenn ich raten müsste hast du eine Liste. Weiter möchtest du denn die Elemente der Liste ausgeben haben?
denis22934
User
Beiträge: 9
Registriert: Freitag 11. September 2020, 16:10

ThomasL hat geschrieben: Freitag 11. September 2020, 20:17 Versuche dich nicht nur ein wenig sonder besser etwas mehr mit Python.
Was für ein Datentyp ist denn [ ] in Python?
Und was für ein Datentyp ist etwas in einfachen oder doppelten Anführungszeichen?
Wenn du das verstanden hast, kennst du auch die Antwort auf deine Frage.
Hey,

danke für die Hilfe habe es mit einem einfachen * vor der Variable gelöst, habe jedoch noch ein Problem.
~~~ sind private Infos (Namen)

Code: Alles auswählen

client = ~~~Client("Hier drin steht ein API Key, welchen ich hier logischerweise nicht zeige")

def createServer():
    client.~~~~.instance_create('~~',
                              region='us-west',
                              lable='',
                              image='~~~~')

def printIPs():
    printing = client.~~~.instances()
    for current_~~~ in printing:
        print(*current_~~~.ipv4 +"Port unwichtig") <--------  Das Problem



def deleteIps():
    linodes = client.~~~.instances()

    first_~~~ = ~~~[0]
    first_~~~.delete()


def main():
    while True:
        select = input(Nicht wichtig)

        if select == "1":
            for each in range(int(input("How many: ")),0,-1):
                createServer()
                print(each)

        if select == "2":
            printIPs()

main()
Ich printe also Ipv4 Adressen aus einer Liste und möchte am Ende jeder Ip den Port anhängen so das sie dann copy, pasted werden können. Doch wenn ich es so versuche bekommen ich diesen Error: TypeError: can only concatenate list (not "str") to list.

Vielen dank im Voraus

Mit freundlichen Grüßen
Denis
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

Private Infos haben in einem Programm eigentlich nichts zu suchen. Ein Programm sollte ja allgemein funktionieren. So ist der Code einfach nur kaputt. Und macht es den Helfenden nur schwierig.
Bitte Fehlermeldungen mit kompletten Traceback, dass man nicht raten muss, wo der Fehler auftritt.
denis22934
User
Beiträge: 9
Registriert: Freitag 11. September 2020, 16:10

Sirius3 hat geschrieben: Sonntag 13. September 2020, 21:39 Private Infos haben in einem Programm eigentlich nichts zu suchen. Ein Programm sollte ja allgemein funktionieren. So ist der Code einfach nur kaputt. Und macht es den Helfenden nur schwierig.
Bitte Fehlermeldungen mit kompletten Traceback, dass man nicht raten muss, wo der Fehler auftritt.
Leider kann ich das nicht machen, um den Code funktionieren zu lassen muss ich einen API key benutzen und ich möchte diesen logischerweise nicht leaken.
Ich weiß zwar nicht wie ich mein Problem löse doch ich denke ich hab es verständlich beschrieben. Die Stelle an dem der Fehler is, ist markiert. Hier nochmal eine Zusammenfassung: Ich printe Ips aus einer Liste und möchte einen Port beim Printen dranhängen doch mit einem einfachen + und dann den Anführungsstrichen geht es nicht da ich sonst den Oben genannten Fehler bekomme.

Ps: mit privaten Infos ist der Provider sowie das Image gemeint

Mit freundlichen Grüßen
Denis
Jankie
User
Beiträge: 592
Registriert: Mittwoch 26. September 2018, 14:06

Deine Variable hat nicht den Datentyp den du vermutest. Schau dir via type() den Datentyp der Varaible an und schau dann nach, wie man diesen Datentyp in einen String umwandelt.
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

Ich will ja auch nicht, dass Du hier Deinen API-Key verrätst, aber ob eine Klasse nun SupergeheimerClient oder einfach nur Client heißt, ist für das Problem egal.
Und was an linux_node so furchtbar privat sein soll, dass man es in der einen Variante ~~~ muß, ist mir ein Rätsel. Genauso warum first_~~~ nicht einfach nur first_node heißt, sondern first_mein_passwort_heißt_12345.
Funktionen schreibt man wie Variablen klein_mit_unterstrich. Alles was eine Funktion braucht, muß sie über ihre Argumente bekommen, client sollte in main erzeugt werden und an die Funktionen übergeben werden.
Irgendwo mitten in einer for-Schleifen-Initialisierung ein input ist sehr überraschend, und Überraschungen mögen Programmierer nicht.

Code: Alles auswählen

API_KEY = "geheim"

def create_server(client):
    client.supergeheime.instance_create('~~',
                              region='us-west',
                              lable='',
                              image='~~~~')
    return client

def print_ips(client):
    addresses = client.vielleicht_das_selbe_von_oben_oder_auch_nicht.instances()
    for address in addresses:
        # Und hier wäre es wichtig, den Typ oder Inhalt von ipv4 zu kennen.
        print(*address.ipv4 +"Port unwichtig")


def delete_ips(client):
    linux_nodes = client.immer_noch_supergeheim_oder_vielleicht_das_selbe_wie_in_der_anderen_funktion.instances()
    first_node = linux_nodes[0]
    first_node.delete()


def main():
    client = SuperdupergeheimerClient(API_KEY)
    while True:
        select = input("1: create server, 2: print IPs")
        if select == "1":
            number_of_clients = int(input("How many: "))
            for each in reversed(range(1, number_of_clients + 1)):
                create_server(client)
                print(each)
        elif select == "2":
            print_ips(client)

if __name__ == '__main__':
    main()
Ich hoffe, Du hast jetzt verstanden, dass man Code am besten so schreibt, dass supergeheime Sachen nicht in Variablennamen stecken.
Zum Problem: schau Dir das Kapitel über Stringformatierung in der Dokumentation an. Sowas löst man nicht mit *, sondern baut sich einen passenden String.
Es ist komisch, eine IP-Addresse als Liste mit 4 Strings zu speichern. Üblicherweise wird die so dargestellt: "168.54.23.12".
Aber da Du nicht verraten willst, welchen Client Du da verwendest, kann man da auch nicht weiter helfen.
Benutzeravatar
__blackjack__
User
Beiträge: 13117
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Sirius3: Ich vermute mal `addresses` ist falsch benannt und sollte `instances` heissen, denn das eine `instance` dann mehr als eine IPv4-Adresse haben kann, macht irgendwie schon wieder Sinn.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
denis22934
User
Beiträge: 9
Registriert: Freitag 11. September 2020, 16:10

Sirius3 hat geschrieben: Montag 14. September 2020, 06:40 Ich will ja auch nicht, dass Du hier Deinen API-Key verrätst, aber ob eine Klasse nun SupergeheimerClient oder einfach nur Client heißt, ist für das Problem egal.
Und was an linux_node so furchtbar privat sein soll, dass man es in der einen Variante ~~~ muß, ist mir ein Rätsel. Genauso warum first_~~~ nicht einfach nur first_node heißt, sondern first_mein_passwort_heißt_12345.
Funktionen schreibt man wie Variablen klein_mit_unterstrich. Alles was eine Funktion braucht, muß sie über ihre Argumente bekommen, client sollte in main erzeugt werden und an die Funktionen übergeben werden.
Irgendwo mitten in einer for-Schleifen-Initialisierung ein input ist sehr überraschend, und Überraschungen mögen Programmierer nicht.

Code: Alles auswählen

API_KEY = "geheim"

def create_server(client):
    client.supergeheime.instance_create('~~',
                              region='us-west',
                              lable='',
                              image='~~~~')
    return client

def print_ips(client):
    addresses = client.vielleicht_das_selbe_von_oben_oder_auch_nicht.instances()
    for address in addresses:
        # Und hier wäre es wichtig, den Typ oder Inhalt von ipv4 zu kennen.
        print(*address.ipv4 +"Port unwichtig")


def delete_ips(client):
    linux_nodes = client.immer_noch_supergeheim_oder_vielleicht_das_selbe_wie_in_der_anderen_funktion.instances()
    first_node = linux_nodes[0]
    first_node.delete()


def main():
    client = SuperdupergeheimerClient(API_KEY)
    while True:
        select = input("1: create server, 2: print IPs")
        if select == "1":
            number_of_clients = int(input("How many: "))
            for each in reversed(range(1, number_of_clients + 1)):
                create_server(client)
                print(each)
        elif select == "2":
            print_ips(client)

if __name__ == '__main__':
    main()
Ich hoffe, Du hast jetzt verstanden, dass man Code am besten so schreibt, dass supergeheime Sachen nicht in Variablennamen stecken.
Zum Problem: schau Dir das Kapitel über Stringformatierung in der Dokumentation an. Sowas löst man nicht mit *, sondern baut sich einen passenden String.
Es ist komisch, eine IP-Addresse als Liste mit 4 Strings zu speichern. Üblicherweise wird die so dargestellt: "168.54.23.12".
Aber da Du nicht verraten willst, welchen Client Du da verwendest, kann man da auch nicht weiter helfen.
Danke erstmal für den Lacher 😂.

Und ja die IPS setzt der Client in eine Liste welche ich dann Printe, ipformat: „ 168.54.23.12".
Ich möchte also die Inhalte aus der Liste Printen und hinter jede Ip den Port anfügen.
denis22934
User
Beiträge: 9
Registriert: Freitag 11. September 2020, 16:10

__blackjack__ hat geschrieben: Montag 14. September 2020, 07:16 @Sirius3: Ich vermute mal `addresses` ist falsch benannt und sollte `instances` heissen, denn das eine `instance` dann mehr als eine IPv4-Adresse haben kann, macht irgendwie schon wieder Sinn.
Nein Adresses ist falsch geschrieben, ist aber die richtige Variable.

Oder hab ich dich falsch verstanden?
Jankie
User
Beiträge: 592
Registriert: Mittwoch 26. September 2018, 14:06

Und was hindert dich daran die Inhalte der Liste zu printen und den Port anzufügen?
denis22934
User
Beiträge: 9
Registriert: Freitag 11. September 2020, 16:10

Jankie hat geschrieben: Montag 14. September 2020, 10:59 Und was hindert dich daran die Inhalte der Liste zu printen und den Port anzufügen?
Bekomme den schon oben genannten Fehler: TypeError: can only concatenate list (not "str") to list.
Eine Google suche hat mir nicht weiter geholfen weil meine gefundenen Ergebnisse nicht meinem Problem ähnelten, da der Fehler einen sehr breiten Raum hat.

Mit freundlichen Grüßen
Denis
Jankie
User
Beiträge: 592
Registriert: Mittwoch 26. September 2018, 14:06

Ja, weil du versuchst eine Liste mit "+" mit einem String zu verketten und dann auszugeben. Schau dir an wie man eine Liste in einen String umwandelt und schau dir Stringformatierung bzw. f-Strings an.

Die Fehlermeldung sagt doch klar wo das Problem ist.
denis22934
User
Beiträge: 9
Registriert: Freitag 11. September 2020, 16:10

Jankie hat geschrieben: Montag 14. September 2020, 13:08 Ja, weil du versuchst eine Liste mit "+" mit einem String zu verketten und dann auszugeben. Schau dir an wie man eine Liste in einen String umwandelt und schau dir Stringformatierung bzw. f-Strings an.

Die Fehlermeldung sagt doch klar wo das Problem ist.
Danke schonmal im Voraus, hab grade nicht die Möglichkeit nach zu gucken.

Ich bin wie gesagt noch nicht so erfahren, habe de Fahler das erste mal und wusste nicht was der Fehler bedeutet. Wie gesagt, danke.

Mit freundlichen Grüßen
Denis
denis22934
User
Beiträge: 9
Registriert: Freitag 11. September 2020, 16:10

Ja vielen Dank nochmal an@ThomasL und @Jankie für die Hilfe auch wenn es ein wenig verwirrend war.Habe jetzt alles im Griff. Natürlich auch danke an alle anderen.

Noch eine letzte Frage wie schließe ich den Thread oder soll ich einfach abwarten.

Mit freundlichen Grüßen
Denis
Jankie
User
Beiträge: 592
Registriert: Mittwoch 26. September 2018, 14:06

Gerne.
Einfach abwarten bis der in den Tiefen des Forums verschwindet.
Antworten