如何在使用python生成的yaml文件中强制打印引号?

2024-06-28 19:43:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用python从excel读取值,并使用yaml.safe_dumps生成一个yaml文件。在

问题-我希望一个值显示在yaml文件中的一个单引号中。例如:'test'。在

我尝试了几个选项,要么得到'''test'''test或{}的输出

你知道如何让单引号显示在yaml文件中吗。在

以下是完整代码:

import yaml

class RDF:
   def __init__(self):
      self.test = "test"

   def create_TDF(self):
      tdf_file_names_new_list = {}
      tdf_file_names_new_list['ID'] = ""
      tdf_file_names_new_list['name'] = ""
      varname = 'test'
      test_name = 'test1'
      test_type = 'single'
      test_definition_data = dict(
        testName = "",
        innerFilterName = 'inner filter',
        testType  = "",
        analysisType = "",
        testInformation = {})

      test_definition_data['testInformation']['p']={}
      p_dict={}
      p_dict['VarName'] = varname
      p_dict['VFile'] = 'file'
      p_dict['affected'] = 'T'
      test_definition_data['testInformation']['p'] = p_dict


      test_definition_data['testInformation']['m']={}
      test_definition_data['testInformation']['m']['VarName']=varname

      test_definition_data['analysisType'] = 'T'
      test_definition_data['testName'] = test_name
      # The "testType" value is what i want to display in "single quotes".
      # tried str(row[3].value) -> output still does not display single quotes.
      # if i change "yaml.safe_dump" statement below to ---> tdf_yaml_file.write(yaml.dump(test_definition_data)) then the output is ---> testType: !!python/unicode 'Hypotonia'


      test_definition_data['testType'] = test_type

      with open('TDF_1'+'.tdf',"w") as tdf_yaml_file:
          tdf_yaml_file.write(yaml.safe_dump(test_definition_data,encoding='utf-8', allow_unicode=False))
        #tdf_yaml_file.write(yaml.dump(test_definition_data))
      tdf_yaml_file.close()


def main():
    tdf = RDF()
    tdf.create_TDF()


if __name__ == '__main__':
   main()

Tags: 文件nametestselfyamldatadefdump
1条回答
网友
1楼 · 发布于 2024-06-28 19:43:09

PyYAML发出的表单在语义上完全等同于您所请求的输出。PyYAML没有承诺(任何等价的库也不能合理地期望做出承诺)来支持每一个可能的语义等价序列化。在

也就是说:

yaml.safe_load('yaml') == yaml.safe_load("'yaml'")

…是一个真实的语句,因此任何区别对待yaml和{}的YAML解析器都是有缺陷的;您应该向解析器的维护者报告您看到的这些bug。在


值得注意的是,许多磁盘格式确实指定并支持定义良好的规范形式。YAML的规范对此有部分定义,PyYAML支持将其作为输出格式。但是,此格式与您请求的格式不同:

^{pr2}$

相关问题 更多 >