python - 在 Python 中从命令行解析带空格的字符串

标签 python string input

有没有办法在 python 中调用我的程序并向它传递一个我希望它解析的字符串,而不将该字符串声明为 'String I want to parse' 但作为 String I want解析

import argparse

#Parse command line for input
parser = argparse.ArgumentParser(description='Parse input string')
#position input argument
parser.add_argument('string', help='Input String')

args = parser.parse_args()
arg_str = args.string

print(arg_str)

当我运行 $ python test.py String I want to parse 我得到错误:test.py: error: unrecognized arguments: I want to parse

有没有办法告诉脚本考虑空格并将输入作为一个字符串,直到到达输入末尾或到达另一个解析参数(例如 -s)?

最佳答案

“正确”的方法是 already mentioned .但 OP 特别要求:

I want it to parse without declaring the string as 'String I want to parse' but as String I want to parse

可以用 custom action 来做到这一点.与简单加入 sys.argv[1:] 相比,这种方法的优势在于解决了以下问题:

Is there anyway to tell the script to account for spaces and take the input as one string until either the end of the input is reached or another parse argument such as -s is reached?

我们可以添加其他选项,而无需将它们清除到“字符串”参数中:

import argparse

class MyAction(argparse.Action):
    def __call__(self, parser, namespace, values, option_string=None):
        setattr(namespace, self.dest, ' '.join(values))

parser = argparse.ArgumentParser(description='Parse input string')
parser.add_argument('string', help='Input String', nargs='+', action=MyAction)
parser.add_argument('--extra', '-s', help='Another Option!')

args = parser.parse_args()
print args

演示:

$ python example.py abc def ghi
Namespace(extra=None, string='abc def ghi')
$ python example.py abc def ghi -s hello
Namespace(extra='hello', string='abc def ghi')
$ python example.py -s hello abc def ghi 
Namespace(extra='hello', string='abc def ghi')

关于python - 在 Python 中从命令行解析带空格的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34256250/

相关文章:

python - 打印号码和号码列表的执行时间

ruby - 在 Ruby 中,如何删除字符串中的所有字符直到子字符串匹配?

c - 向 strcpy 提供一个非空终止的字符串

jquery文件选择事件触发?

javascript - 如何使用 onclick 按钮将用户输入保存为 javascript 中的变量?

python - joblib.Parallel 用于嵌套列表理解

python - 如何在 matplotlib 图形文本中使用(新样式)字符串格式

python - 如何在 Python-telegram-bot 中使用 Jobqueue

string - 在 Mathematica 中使用 "CreateDocument"函数而不丢失格式

python - 如何通过 input() 控制线程?