将 YAML 文件中的数字替换为随机数

2024-02-04

我有一个包含很多数字的文件。我希望每个数字都被替换为随机数。以便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。生成随机数的方法有多种,因为您需要它们作为标量字符串,并以逗号作为小数分隔符,我建议使用random.randrange并将结果作为字符串进行处理:

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),但无法对齐较小数字的列。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 YAML 文件中的数字替换为随机数 的相关文章

随机推荐

  • jQuery - 窗口焦点、模糊事件未触发 - 适用于 Firefox 和 Chrome

    简而言之 我编写了一个简单的聊天应用程序供我和我的朋友使用 当运行应用程序的窗口没有焦点 最小化或位于其他窗口后面 并且出现消息时 我想更改窗口标题栏以充当警报 就像 Google 的聊天应用程序在 GMail 中所做的那样 在 Firef
  • 如何在 Phpunit 的静态提供程序中创建测试双打?

    Phpunit 10 已弃用非静态测试提供程序 这使得在提供者内部创建测试替身成为问题 因为像这样的方法createMock or createStub 不是静态的 这是一个演示该问题的假测试 public function provide
  • 在单独的线程中执行操作以解锁 UI

    我有一个用于生成报告的表格 我们正在使用RDLC报告并且报告被加载到aspx page 所以这是代码Form 表单目标设置为 blank 并在新选项卡中打开 using Html BeginForm AssetReports AssetRe
  • 根据常识,什么是正确的: (int) blabla * 255.99999999999997 或 round(blabla*255)?

    最近我在 webkit 源代码中发现了这个有趣的事情 与颜色转换 hsl 到 rgb 相关 http osxr org android source external webkit Source WebCore platform graph
  • MongoDB 中多租户数据库的推荐方法是什么?

    我正在考虑使用 MongoDB 创建一个多租户应用程序 我还没有猜测我会有多少租户 但我希望能够扩展到数千个 我可以想到三种策略 同一集合中的所有租户 使用特定于租户的字段来确保安全 单个共享数据库中每个租户 1 个集合 每个租户 1 个数
  • 使用 python 从 LaTeX 文件中提取特定部分

    我有一组 LaTeX 文件 我想为每个提取 抽象 部分 begin abstract end abstract 我已经尝试过这里的建议 如何解析LaTex文件 https stackoverflow com questions 307523
  • 方法的多个返回类型

    我正在尝试用 Rust 编写一个简单的电视剧文件重命名器 文件名被解析 并且可能是多种类型之一 基于日期 基于季节 剧集编号等 然后 此解析后的文件将转换为包含数据库中数据的 填充文件 然后将其格式化为新文件名 最初我尝试让parse方法采
  • DB PHP 中的条目数

    我正在创建一个函数来显示现在有多少用户在线 这是基于过去 5 分钟内打开页面的人 每个页面加载都保存到我的数据库中 如下所示 目前我有以下代码 query mysql query SELECT user id timestamp FROM
  • Vuex - 绑定助手中的动态命名空间(mapState,...)

    我正在动态注册 vuex 存储模块 store registerModule home grid GridStore 然后在组件中 export default name GridComponent props namespace type
  • 哪些版本控制工具可用于 MongoDB [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我计划将基于 mongodb 的迁移工具集成到我的 spring boot 应用程序中 该应用程序在项目中具有 spring data 依赖
  • 在sqlite数据库中保存日志表?

    我正在寻找一种方法来设置 通过 SQL 一个日志表 其中包含对我的 sqlite 数据库所做的所有操作 最好是向数据库发出的插入 创建表等语句 我确信有办法通过在每个表上设置触发器来做到这一点 但这只是太多的工作 而且如果我稍后更改数据库的
  • 在 C# 中通过委托实现观察者模式?

    有一个问题已经回答了 那就是在C 中 观察者模式不是已经使用事件实现了吗 https stackoverflow com questions 32034 in c isnt the observer pattern already impl
  • Rails 验证中的单词计数

    我使用以下验证来计算 Rails 中的单词数 我从 Rails 文档中获取了示例 但它并不真正准确 validates body length gt minimum gt 50 maximum gt 300 tokenizer gt lam
  • 将日志文件保持在一定大小

    我有一个在信息亭 C WPF 中的独立平板电脑上运行的应用程序 它对文本文件执行一些典型的日志记录操作 随着这些日志的增长 PC 具有有限的磁盘空间来存储这些日志 我需要做的是能够指定日志文件允许的最大大小 如果在尝试写入日志时超出最大大小
  • 使用 EF Core 和 MySQL 实现行版本的更好方法?

    如果我在模型中使用以下字段 DatabaseGenerated DatabaseGeneratedOption Computed Timestamp public DateTime RowVersion get set 然后将该列定义为 R
  • Composer 不检测 php7,而是使用 5.6。如何设置 CLI 以使用 php7

    当我执行时在这里php v 它说它有 php7 但是当我尝试执行时composer update 回应它 Your requirements could not be resolved to an installable set of pa
  • MySQL 多重选择、多个Where 子句

    我不想为一项操作运行数百个 SELECT 查询 而是只想运行一个大查询 我希望这能减轻服务器上的负载 SELECT SELECT link type id FROM connections WHERE node to id 0 AND no
  • 使用 AAD 应用程序密钥和服务主体密码之间的身份验证差异

    要在 Azure 中运行应用程序 我需要在 Azure AD 中创建应用程序和相应的服务主体 然后我的应用程序针对此应用程序 主体对进行身份验证 为了进行身份验证 我可以在应用程序注册中创建应用程序密钥 或者可以在服务主体中创建密码 以及其
  • Visual Studio 2017 HRESULT: 0x80070005 / E_ACCESSDENIED 项目创建

    我正在运行 Visual Studio 2017 版本 15 0 0 26228 9 当我尝试通过创建一个新项目时文件 gt 新建 gt 项目 在 Visual Studio 2017 中 我收到以下错误消息 并且未创建项目 访问被拒绝 H
  • 将 YAML 文件中的数字替换为随机数

    我有一个包含很多数字的文件 我希望每个数字都被替换为随机数 以便Python脚本更改YAML文件 如何用 Python 编写这个代码 h 1 X 950 00000 Y 1500 00000 Z 150 00000 h 2 X 950 00