[Python] argparse e stringhe

Marco De Paoli depaolim a gmail.com
Mer 8 Apr 2020 08:37:52 CEST


Il giorno mer 8 apr 2020 alle ore 08:28 Marco De Paoli <depaolim a gmail.com>
ha scritto:

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

se invece vuoi qualche altra info su newline ed escape puoi dare
un'occhiata qui
https://stackoverflow.com/questions/16904064/end-of-line-new-line-escapes-in-bash

M.

>
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20200408/29671761/attachment-0001.html>


Maggiori informazioni sulla lista Python