[Python] argparse e stringhe

Marco De Paoli depaolim a gmail.com
Mer 8 Apr 2020 08:28:57 CEST


Il giorno mer 8 apr 2020 alle ore 08:16 Matteo Perini <
perini.matteo a gmail.com> ha scritto:

> 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
>

se vuoi i parametri raw

import sys
print(sys.argv)

ciao,
Marco
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20200408/209ba595/attachment.html>


Maggiori informazioni sulla lista Python