【问题标题】:Python: arg-parsing inside of an input function? [duplicate]Python:在输入函数内部进行 arg 解析? [复制]
【发布时间】:2021-12-18 09:44:24
【问题描述】:

所以我一直很想知道如何在输入函数中进行参数解析。 例如:

a = input('enter something here: ')

现在,假设我在a中输入'--url example.com --data some_data_here',我将如何分别读取'--url'和'--data'之后的内容?非常感谢您的帮助:)

【问题讨论】:

标签: python argparse


【解决方案1】:

在这里,在下面的实现中,代码很长,以便更具描述性和可理解性,但是一旦您理解了逻辑,您就可以进一步简化它。

在这里,我在input_str 中找到url_identifierdata_identifier 的索引,添加它们各自的长度以找到它们结束的索引和1 为空格字符,然后我正在切片input_str使用索引数据来获得所需的输出。

def foo(input_str):
    url_identifier = "--url"
    data_identifier = "--data"
    
    url_identifier_start_idx = input_str.find(url_identifier)
    url_identifier_end_idx = url_identifier_start_idx + len(url_identifier) + 1

    data_identifier_start_idx = input_str.find(data_identifier)
    data_identifier_end_idx = data_identifier_start_idx + len(data_identifier) + 1

    url = input_str[url_identifier_end_idx:data_identifier_start_idx]

    data = input_str[data_identifier_end_idx:]

    print(url)
    print(data)

foo("--url google.com --data hello world")

输出

~/Rod-Cutting$ python hello.py 
google.com 
hello world

【讨论】:

    【解决方案2】:

    您可以使用argparse 轻松完成此操作。将输入拆分成一个数组并传递给parse_args

    import argparse
    
    parser = argparse.ArgumentParser()
    parser.add_argument("--url")
    parser.add_argument("--data")
    
    args = parser.parse_args(input('enter something here: ').split(' '))
    
    print(f"{args.url=}")
    print(f"{args.data=}")
    

    --url foo --data bar 为例

    enter something here: --url foo --data bar
    args.url='foo'
    args.data='bar'
    

    【讨论】:

      猜你喜欢
      • 2020-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-30
      • 2021-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多