我有一个有很多数字的文件.我希望每个数字都被一个随机数取代.因此Python脚本会更改YAML文件.如何用Python编写代码?

!h 1: {X: '-950,00000', Y: '1500,00000', Z: '150,00000'}
!h 2: {X: '-950,00000', Y: '1500,00000', Z: '150,00000'}
!h 3: {X: '-950,00000', Y: '1500,00000', Z: '150,00000'}
!h 4: {X: '-950,00000', Y: '1500,00000', Z: '150,00000'}
!h 5: {X: '-950,00000', Y: '1500,00000', Z: '150,00000'}
!h 6: {X: '-950,00000', Y: '1500,00000', Z: '150,00000'}

推荐答案

你可以用ruamel.yaml美元.产生随机数的方法多种多样,因为

import sys
from random import randrange
from pathlib import Path
import ruamel.yaml

in_file = Path('input.yaml')
out_file = Path('output.yaml')

def randfloatstr():
    # this gives you max 4 digits before the comma and 5 digits after
    x = str(randrange(0, 1000000000))
    return x[:-5] + ',' + x[-5:]
    
yaml = ruamel.yaml.YAML()
data = yaml.load(in_file)
for v in data.values():
    for k in v:
        v[k] = randfloatstr()

yaml.dump(data, out_file)
sys.stdout.write(out_file.read_text())

它给出:

!h 1: {X: '2767,85747', Y: '8281,59187', Z: '2729,91875'}
!h 2: {X: '324,84623', Y: '6669,00402', Z: '6183,89608'}
!h 3: {X: '5349,15868', Y: '7987,69554', Z: '243,05155'}
!h 4: {X: '6738,35201', Y: '2497,61750', Z: '2933,25689'}
!h 5: {X: '6013,68067', Y: '5265,31446', Z: '9229,21356'}
!h 6: {X: '4656,47702', Y: '4710,97938', Z: '5264,45726'}

ruamel.yaml将保留标记(!h),但不能为较小的数字对齐列.

Python相关问答推荐

使用图片生成PDF Django rest框架

请从Python访问kivy子部件的功能需要帮助

使用多个性能指标执行循环特征消除

添加包含中具有任何值的其他列的计数的列

无法使用equals_html从网址获取全文

使用plotnine和Python构建地块

如何让剧作家等待Python中出现特定cookie(然后返回它)?

有症状地 destruct 了Python中的regex?

按列分区,按另一列排序

图像 pyramid .难以创建所需的合成图像

用NumPy优化a[i] = a[i-1]*b[i] + c[i]的迭代计算

当从Docker的--env-file参数读取Python中的环境变量时,每个\n都会添加一个\'.如何没有额外的?

driver. find_element无法通过class_name找到元素'""

使用特定值作为引用替换数据框行上的值

Flask Jinja2如果语句总是计算为false&

合并与拼接并举

在Admin中显示从ManyToMany通过模型的筛选结果

如何在Python中使用Iscolc迭代器实现观察者模式?

如何使用matplotlib查看并列直方图

当我定义一个继承的类时,我可以避免使用`metaclass=`吗?