2016-12-04 3 views
0

Я использую Argparse в python3.5. один из моих обязательных параметров - длинная строка, которая может иметь любой символ, такой как одиночные или двойные кавычки. Я не хочу ограничивать пользователя тем, как он использует этот скрипт python, и заставить его удалить эти символы. поэтому я ищу решение для обработки котировок в моем коде.Как обрабатывать кавычки в аргументе python

Это мой аргумент парсер:

class MyParser(argparse.ArgumentParser): 
    def error(self, message): 
     sys.stderr.write('Error: %s\n' % message) 
     self.print_help() 
     sys.exit(2) 

    def msg(name=None): 
     return '''python3.5 file.py Text''' 

parser = MyParser(description='You must pass exactly one arguments after classifier.py . Use quotes after and before the argument.', usage=MyParser.msg()) 
parser.add_argument('text', help='"News Text" for classification (Required Parameter)') 
args = parser.parse_args() 

Этого типа аргумент терпит неудачу с неопознанной ошибкой:

>>> python3.5 file.py "Apps infected by Gooligan include "Perfect Cleaner," and more." 
Error: unrecognized arguments: Cleaner, and more. 

И иногда без каких-либо ошибок:

>>> python3.5 file.py "Now "Support is expensive, and, when you're Google or any other vendor," said Michael Jude." 
> 

Я хочу знать причину ошибок второго типа и решения ошибок обработки в моем коде без какого-либо внимания к аргументу.

ответ

1

Это не вопрос argparse. Речь идет о том, как оболочка разбивает входную строку и передает ее Python. Посмотрите на sys.argv, чтобы посмотреть, что должно быть argparse.

Я считаю, что обратная косая черта позволяет включать в строки кавычки и другие специальные символы, но экспериментировать.

Из боковой панели: Python argparse argument with quotes

+1

Вы также можете попробовать одиночные кавычки всего рассуждения. – kindall

+0

@kindall Но будьте осторожны, что одиночные кавычки в одной кавычки * не могут быть экранированы. –

 Смежные вопросы

  • Нет связанных вопросов^_^