[Python] argparse e stringhe

Matteo Perini perini.matteo a gmail.com
Mer 8 Apr 2020 08:16:03 CEST


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





Maggiori informazioni sulla lista Python