Python:输入函数内部的参数解析?

Python: arg-parsing inside of an input function?

所以我很好奇如何在输入函数内部进行参数解析。 例如:

a = input('enter something here: ')

现在,假设,如果我在 a 中输入 '--url example.com --data some_data_here',我将如何读取 '-- 之后的内容url' 和 '--data' 分开?帮助将不胜感激:)

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

这里我在 input_str 中找到 url_identifierdata_identifier 的索引,添加它们各自的长度以找到它们结束的索引和 1 对于 space 字符,然后我用索引数据对 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

您可以使用 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'