【问题标题】:Parse a nested list with python argparse使用 python argparse 解析嵌套列表
【发布时间】:2019-11-28 10:58:29
【问题描述】:

假设我期待一个列表列表,其中内部列表具有不同的类型和长度,例如。 g.,

[[1, 2], ["foo", "bar"], [3.14, "baz", 20]]

如何使用 argparse 解析上述列表?

stackoverflow 上最有用的问题:

存在类似的问题,其中最有用的是here。但就我而言,它们还不够好,因为它们忽略了列表嵌套了不同数据类型和长度的事实。

【问题讨论】:

  • 为什么不直接使用stackoverflow.com/a/24866869/1358308 而是使用json.loads 作为type 参数?
  • 这就是我目前正在做的事情。问题是您需要解析字符串,在我的示例中为“[[1, 2], ['foo', 'bar'], [3.14, 'baz', 20]]”,然后提取数据.因此,我想知道是否有更有效的方法?你能评论一下type 是如何用json.loads 处理的吗?
  • 请注意,使用 json 意味着字符串使用双引号,而您的示例使用单引号。有什么原因吗?
  • 不,我修改了。

标签: python list argparse


【解决方案1】:

扩展我的评论:

from argparse import ArgumentParser
import json

parser = ArgumentParser()
parser.add_argument('-l', type=json.loads)
parser.parse_args(['-l', '[[1,2],["foo","bar"],[3.14,"baz",20]]'])

打印:

Namespace(l=[[1, 2], ['foo', 'bar'], [3.14, 'baz', 20]])

【讨论】:

  • 并且在实际从 bash 调用程序时,您可能需要转义引号
猜你喜欢
  • 2018-01-04
  • 2021-12-24
  • 2015-12-26
  • 2012-05-13
  • 2012-10-28
  • 1970-01-01
  • 2013-07-24
  • 1970-01-01
相关资源
最近更新 更多