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_identifier
和 data_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'
所以我很好奇如何在输入函数内部进行参数解析。 例如:
a = input('enter something here: ')
现在,假设,如果我在 a 中输入 '--url example.com --data some_data_here',我将如何读取 '-- 之后的内容url' 和 '--data' 分开?帮助将不胜感激:)
给你,在下面的实现中,代码很长,以便更具描述性和理解性,但是一旦你理解了逻辑,你可以进一步简化它。
这里我在 input_str
中找到 url_identifier
和 data_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'