相关疑难解决方法(0)

如何控制PyYAML用于数据的标量形式?

我有一个带有短字符串属性的对象,以及一个长多行字符串属性.我想将短字符串写为YAML引用的标量,将多行字符串写为文字标量:

my_obj.short = "Hello"
my_obj.long = "Line1\nLine2\nLine3"
Run Code Online (Sandbox Code Playgroud)

我希望YAML看起来像这样:

short: "Hello"
long: |
  Line1
  Line2
  Line3
Run Code Online (Sandbox Code Playgroud)

我怎样才能指示PyYAML这样做?如果我调用yaml.dump(my_obj)它,它会产生一个类似dict的输出:

{long: 'line1

    line2

    line3

    ', short: Hello}
Run Code Online (Sandbox Code Playgroud)

(不确定为什么长的是这样的双倍间距...)

我可以指示PyYAML如何对待我的属性吗?我想影响顺序和风格.

python yaml pyyaml

21
推荐指数
5
解决办法
9695
查看次数

Python中的自定义JSON sort_keys顺序

在Python 2.6中有没有办法为JSON的sort_keys提供自定义键或cmp函数?

我有一个来自JSON的dicts列表,如下所示:

[
  {
    "key": "numberpuzzles1",
    "url": "number-puzzle-i.html",
    "title": "Number Puzzle I",
    "category": "nestedloops",
    "points": "60",
    "n": "087"
  },
  {
     "key": "gettingindividualdigits",
     "url": "getting-individual-digits.html",
     "title": "Getting Individual Digits",
     "category": "nestedloops",
     "points": "80",
     "n": "088"
  }
]
Run Code Online (Sandbox Code Playgroud)

...我已经存储到list变量中了assigndb.我希望能够加载JSON,修改它,并使用dumps(或其他)将其序列化,保持密钥的顺序完好无损.

到目前为止,我尝试过这样的事情:

ordering = {'key': 0, 'url': 1, 'title': 2, 'category': 3,
             'flags': 4, 'points': 5, 'n': 6}

def key_func(k):
    return ordering[k]

# renumber assignments sequentially
for (i, a) in enumerate(assigndb):
    a["n"] = "%03d" % …
Run Code Online (Sandbox Code Playgroud)

python sorting json

16
推荐指数
2
解决办法
1万
查看次数

标签 统计

python ×2

json ×1

pyyaml ×1

sorting ×1

yaml ×1