2016-12-04 14 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

これは​​の問題ではありません。これは、シェルが入力行を分割してPythonに渡す方法の問題です。 sys.argvを参照して、​​が動作する必要があるものを確認してください。

バックスラッシュでは、引用符やその他の特殊文字を文字列に含めることができますが、これは実験的なものです。

サイドバーから: Python argparse argument with quotes

+1

また、引数全体の周りの単一引用符を試みることができます。 – kindall

+0

@kindall一重引用符で囲まれた文字列*中の一重引用符はエスケープできないことに注意してください。 –

関連する問題