【问题标题】:yaml damping a list as a string without quotesyaml 将列表阻尼为不带引号的字符串
【发布时间】:2021-03-12 18:40:22
【问题描述】:

我正在尝试在 python 的 yaml 文件中转储一个列表。然而,结果我得到了我的名单周围的报价。 这是我的代码:

data = [679.0077123045467, 0.0, 356.3515350783442, 0.0, 672.9969017826554, 196.5430429125135,
    0.0, 0.0, 1.0]
data = str(data)

my_dict = {"matrix": {'rows': 3, 'cols': 3, 'data': data}}

结果:

matrix:
  rows: 3
  cols: 3
  data: '[679.0077123045467, 0.0, 356.3515350783442, 0.0, 672.9969017826554, 196.5430429125135,
    0.0, 0.0, 1.0]'

想要的结果:

matrix:
  rows: 3
  cols: 3
  data: [679.0077123045467, 0.0, 356.3515350783442, 0.0, 672.9969017826554, 196.5430429125135,
    0.0, 0.0, 1.0]

如何在没有引号的情况下转储它? 谢谢。

【问题讨论】:

  • 你想要的与你所做的相反。您明确将列表转换为字符串,因此 yaml 必须正确引用它。否则这将是一个有效的 yaml 列表。

标签: python list yaml


【解决方案1】:

不要做data = str(data)

Yaml 可以用破折号表示一个列表。不过不用担心,如果你在 Python 中重新加载它,它将再次成为一个正常的列表!

【讨论】:

  • 但是它在列表项之前给出了一些不同的东西,比如破折号(-),并且每个都留在换行符中。 matrix: rows: 3 cols: 3 data: - 679.0077123045467 - 0.0 - 356.3515350783442 - 0.0 - 672.9969017826554 - 196.5430429125135 - 0.0 - 0.0 - 1.0
  • @Reactionic 是的.. 那是 yaml
  • @Reactionic 如果您尝试在 YAML 中强制使用 [ ...] 列表格式,则可能有一些选项取决于您使用的库。对于pyaml,我认为yaml.dump(a, default_flow_style=False) 可能有效,(当然,省略data = str(data)
  • 正如@juanpa.arrivillaga 所说,yaml 可以表示带有破折号的列表。不过不用担心,如果你在 Python 中重新加载它,它将再次成为一个普通列表!
  • @Reactionic 不要那样做。只需省略 data = str(data) 并保留破折号格式。 如果应用程序使用 yaml,那么它理解为等同于您手动执行的操作
猜你喜欢
  • 2014-02-02
  • 2012-10-25
  • 1970-01-01
  • 2019-11-28
  • 1970-01-01
  • 2017-08-21
  • 2014-02-08
  • 2019-01-16
  • 2010-09-13
相关资源
最近更新 更多