Ciao a tutti,

ho un problemino con il comportamento di argparse.

Sto facendo delle prove con questo script di test:

if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument("-t", "--text", default = 'ci\nao', type=str)
    args = parser.parse_args()
    text = args.text
    for line in text.split('\n'):
        print(line)

Se eseguo lo script senza argomenti il risultato è quello atteso:

ci

ao

Il "\n" viene interpretato correttamente.

Se però eseguo lo script mettendo come argomento -t "ci\nao" il risultato è:

ci\nao

problema che riesco a risolvere convertendo text così:

text = bytes(args.text, "utf-8").decode("unicode_escape")

a questo punto ottengo di nuovo l'andata a capo.


Ultimo caso, se l'utente non mette le virgolette  e scrive -t ci\nao il risultato di args.text è:

cinao

mi toglie solo la "\" e a questo punto io non so più come trattarlo.

Che voi sappiate c'è un modo per controllare se un argomento ha le virgolette o no.

Oppure trattare l'input sempre come raw?

Penso sia un problema che potrebbe essere piuttosto comune ma non ho trovato soluzioni online.

Ciao

Matteo



_______________________________________________
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python

Rispondere a