有人可以告诉我如何从运行配置的参数字段传递 JSON 作为脚本参数吗?
我正在尝试传递此 JSON:
{"beam":5,"max_len_a":1.2,"max_len_b":10}
尝试过:
'{"beam":5,"max_len_a":1.2,"max_len_b":10}'
"{"beam":5,"max_len_a":1.2,"max_len_b":10}"
\"{"beam":5,"max_len_a":1.2,"max_len_b":10}\"
"{\"beam\":5,\"max_len_a\":1.2,\"max_len_b\":10}"
全部失败。
传递问题中的示例参数相对简单。唯一适用的规则是引号 (
"
) 必须使用反斜杠 (\"
) 进行转义。有关应用更多规则的更复杂示例,请参阅 Pycharm 删除参数字段中的引号。
运行/调试配置:Python
指定脚本参数时,请遵循以下规则:
(...)
- 如果脚本参数包含双引号,请使用反斜杠转义双引号,
示例 JSON 字符串:
{"beam":5,"max_len_a":1.2,"max_len_b":10}
应写为:
{\"beam\":5,\"max_len_a\":1.2,\"max_len_b\":10}
然后您可以使用脚本轻松地将参数转换为 JSON 对象
import json
import sys
your_string = sys.argv[1]
z = json.loads(your_string)
以下屏幕截图显示了运行配置:
如果您使用 argparse 并有这样的参数:
import argparse
parser = argparse.ArgumentParser(description='Demo-Tool')
parser.add_argument('--params', type=str, help='JSON-serialized params dict')
您需要使用反斜杠转义引号并在 JSON 周围添加引号。以下在运行配置中为我解决了这个问题:
--params "{\"beam\":5,\"max_len_a\":1.2,\"max_len_b\":10}"