如何显示“'*'”之类的字符串

时间:2019-01-23 09:34:10

标签: python

尝试将字符串打印为yaml,例如-"'*'"

CORS = '\"\'*\'\"' .   
globals_res = {'API': {'Cors': {'AllowMethods': CORS, 
                                'AllowHeaders': CORS, 
                                'AllowOrigin': CORS}
}   
print(yaml.safe_dump(jl,default_flow_style=False))

结果

API:  
    Cors:         
         AllowHeaders: ' "''*''" '  
         AllowMethods: ' "''*''" '  
         AllowOrigin: ' "''*''" '  

必须为

API:  
   Cors:  
        AllowMethods: "'*'" .   
        AllowHeaders: "'*'" .  
        AllowOrigin: "'*' . 

1 个答案:

答案 0 :(得分:0)

我认为答案是仅使用"'*'"

为了展示如何获取其他字符串,我通过执行以下操作生成了一个包含所需YAML输出("'*'")的虚拟YAML文档:

document = ''' "'*'" '''

然后使用PyYAML包进行加载:

import yaml
x = yaml.load(document)

然后我可以使用以下显示:

print(repr(x))

输出我需要的常量("'*'")。然后可以通过以下方式将其用于生成有效文件:

allow_all = "'*'"
cors = {
  "AllowMethods": allow_all,
  "AllowHeaders": allow_all,
  "AllowOrigin": allow_all,
}
apisettings = {"Globals": {"Api": {"Cors": cors}}}
print(yaml.dump(apisettings))

这给了我

Globals:
  Api:
    Cors: {AllowHeaders: '''*''', AllowMethods: '''*''', AllowOrigin: '''*'''}

实际上与您所追求的相同,但是您需要阅读YAML规范以了解如何escape scalars。您可以这样做来放心:

yaml.load("'''*'''")

并再次获得"'*'"