相关疑难解决方法(0)

Python中的任何yaml库都支持将长字符串转储为块文字或折叠块?

我希望能够转储一个字典,其中包含我希望在块样式中具有的长字符串以便于阅读.例如:

foo: |
  this is a
  block literal
bar: >
  this is a
  folded block
Run Code Online (Sandbox Code Playgroud)

PyYAML支持使用这种样式加载文档,但我似乎找不到以这种方式转储文档的方法.我错过了什么吗?

python yaml pyyaml

19
推荐指数
2
解决办法
6447
查看次数

与pyyaml相当的输出

我有一个python项目,我想使用YAML(pyYaml 3.11),特别是因为它"非常"且用户可以在必要时在文本编辑器中轻松编辑.但问题是,如果我将YAML带入python应用程序(我将需要)并编辑内容(因为我需要),那么编写新文档通常不如我开始时那么漂亮.

pyyaml文档非常差 - 甚至没有将参数记录到转储函数.我找到了http://dpinte.wordpress.com/2008/10/31/pyaml-dump-option/.但是,我仍然缺少我需要的信息.(我开始查看源代码,但它似乎并不是最吸引人的.如果我没有得到解决方案,那么这是我唯一的办法.)

我从一个看起来像这样的文档开始:

- color green :
     inputs :
        - port thing :
            widget-hint : filename
            widget-help : Select a filename
        - port target_path : 
            widget-hint : path
            value : 'thing' 
     outputs:
        - port value:
             widget-hint : string
     text : |
            I'm lost and I'm found
            and I'm hungry like the wolf.

加载到python(yaml.safe_load(s))后,我尝试了几种方法将其转储出来:

>>> print yaml.dump( d3, default_flow_style=False, default_style='' )
- color green:
    inputs:
    - port thing:
        widget-help: Select a filename
        widget-hint: filename
    - port target_path: …

python yaml pretty-print pyyaml

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

pyyaml并仅使用字符串引号

我有以下YAML文件:

---
my_vars:
  my_env: "dev"
  my_count: 3
Run Code Online (Sandbox Code Playgroud)

当我用PyYAML读取它并再次转储它时,我得到以下输出:

---
my_vars:
  my_env: dev
  my_count: 3
Run Code Online (Sandbox Code Playgroud)

有问题的代码:

with open(env_file) as f:
    env_dict = yaml.load(f)
    print(yaml.dump(env_dict, indent=4, default_flow_style=False, explicit_start=True))
Run Code Online (Sandbox Code Playgroud)

我尝试使用default_style参数:

with open(env_file) as f:
    env_dict = yaml.load(f)
    print(yaml.dump(env_dict, indent=4, default_flow_style=False, explicit_start=True, default_style='"'))
Run Code Online (Sandbox Code Playgroud)

但现在我得到:

---
"my_vars":
  "my_env": "dev"
  "my_count": !!int "3"
Run Code Online (Sandbox Code Playgroud)

不对 YAML文件中的变量名做任何假设的情况下,我需要做什么来保持原始格式?

python quotes pyyaml

8
推荐指数
3
解决办法
7583
查看次数

python使用Pyyaml并保持格式

这是一个配置文件,我使用 PyYAML 从中更改了一些值,然后我编写了一些配置,但它会更改我的格式,这让我感到困惑。

 $ results.yaml 
 nas:
     mount_dir: '/nvr'
     mount_dirs: ['/mount/data0', '/mount/data1', '/mount/data2']

# yaml.py

import yaml.py

conf = open("results.conf", "r")
results = yaml.load(conf)
conf.close()

result['nas']['mount_dirs'][0]= "haha"

with open('/home/zonion/speedio/speedio.conf', 'w') as conf:
    yaml.dump(speedio, conf, default_flow_style=False)

conf.close()
Run Code Online (Sandbox Code Playgroud)

但它改变了我的格式,我该怎么办?

# cat results.conf
nas:
  mount_dir: /nvr
  mount_dirs:
  - haha
  - /mount/data1
  - /mount/data2
Run Code Online (Sandbox Code Playgroud)

python yaml

7
推荐指数
2
解决办法
5024
查看次数

使用python进行Json字符串格式化

我想知道是否有任何方法可以使用python中的json格式化一些对象的结果字符串.例如,假设我有以下字典:

{'a': 12.73874, 'b': 1.74872, 'c': 8.27495}
Run Code Online (Sandbox Code Playgroud)

并且json编码的结果是:

{
    "c": 8.27495,
    "b": 1.74872,
    "a": 12.73874
}
Run Code Online (Sandbox Code Playgroud)

而我想要的结果是:

{
    "a": 12.74,
    "c": 8.28,
    "b": 1.75
}
Run Code Online (Sandbox Code Playgroud)

注意元素的顺序和每个数字的小数位.有没有办法做到这一点?

提前致谢!

python string format json

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

标签 统计

python ×5

pyyaml ×3

yaml ×3

format ×1

json ×1

pretty-print ×1

quotes ×1

string ×1