Sappiamo che la formattazione uno argomento può essere fatto utilizzando uno%s
in una stringa:python - Come formattare il numero variabile di argomenti in una stringa?
>>> "Hello %s" % "world"
'Hello world'
per due argomenti, possiamo usare due %s
(duh!):
>>> "Hello %s, %s" % ("John", "Joe")
'Hello John, Joe'
Quindi, come posso formattare un numero variabile di argomenti senza dover definire esplicitamente all'interno della stringa di base un numero di %s
uguale al numero di argomenti da formattare? sarebbe molto bello se qualcosa di simile esiste:
>>> "Hello <cool_operator_here>" % ("John", "Joe", "Mary")
Hello JohnJoeMary
>>> "Hello <cool_operator_here>" % ("John", "Joe", "Mary", "Rick", "Sophie")
Hello JohnJoeMaryRickSophie
Questo è anche possibile o l'unica cosa che ho potuto fare a questo proposito è quello di fare qualcosa di simile:
>>> my_args = ["John", "Joe", "Mary"]
>>> my_str = "Hello " + ("".join(["%s"] * len(my_args)))
>>> my_str % tuple(my_args)
"Hello JohnJoeMary"
NOTA: I bisogno per farlo con l'operatore di formattazione delle stringhe %s
.
UPDATE:
Ha bisogno di essere con il %s
perché una funzione da un'altra libreria formati mia stringa usando quel determinato gestore che mi passa la stringa formattata e gli argomenti per formattarlo, ma rende alcuni controlli e correzioni (se necessario) sugli argomenti prima di realizzare effettivamente la formattazione.
quindi ho bisogno di chiamarlo:
>>> function_in_library("Hello <cool_operator_here>", ["John", "Joe", "Mary"])
"Hello JohnJoeMary"
Grazie per il vostro aiuto!
Perché * ci * è necessario * per noi e l'operatore '% s'? Non ha molto senso; usa 'str()' invece. –
In che modo l'operatore "cool qui" specifica come connettere i valori?Non vuoi che stampi solo "Ciao JohnJoeMary" o "Ciao" ("John", "Joe", "Mary") ", vero? Potresti volere "Ciao Giovanni, Joe, Maria" o "Ciao Giovanni, Joe e Maria" o "Ciao Giovanni, Joe e Maria" o un milione di altre cose; non c'è alcun modo in cui un singolo operatore potrebbe lasciarti fare tutti questi. – abarnert
Dovresti comunque essere in grado di chiamarlo con 'function_in_library (" Hello% s ",", ".join ([" John "," Joe "," Mary "])' – Oli