我使用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()
PyYAML发出的表单在语义上完全等同于您所请求的输出。PyYAML没有承诺(任何等价的库也不能合理地期望做出承诺)来支持每一个可能的语义等价序列化。在
也就是说:
…是一个真实的语句,因此任何区别对待}的YAML解析器都是有缺陷的;您应该向解析器的维护者报告您看到的这些bug。在
yaml
和{值得注意的是,许多磁盘格式确实指定并支持定义良好的规范形式。YAML的规范对此有部分定义,PyYAML支持将其作为输出格式。但是,此格式与您请求的格式不同:
^{pr2}$相关问题 更多 >
编程相关推荐