首页 > 编程语言 >python中 yaml.dump 对dict dump成yaml文件时,给特定字符串保留(加上)单引号

python中 yaml.dump 对dict dump成yaml文件时,给特定字符串保留(加上)单引号

时间:2022-10-12 11:33:41浏览次数:65  
标签:dump re python 单引号 yaml user id

以下例子来源于
https://www.cnblogs.com/saiminhou/p/13729119.html

python yaml dict对str类型加上单引号
源数据:

dict1 = {"user_id": 23026,
         "contact": [{"name": "phone",
                      "regexpr": "(^(0\d{2}-\d{8}(-\d{1,4})?)|(0\d{3}-\d{7,8}(-\d{1,4})?))|(^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,5-9]))\d{8})[ ]*$"}]
         }

python脚本:

import yaml
def quoted_presenter(dumper, data):
    return dumper.represent_scalar('tag:yaml.org,2002:str', u'%s' % data, style="'")
yaml.add_representer(str, quoted_presenter)
yaml.dump(dict1, sys.stdout, width=1200, default_flow_style=False, sort_keys=False)    

运行结果如下:str类型的都加上了单引号,数字没有

'user_id': 23026
'contact':
- 'name': 'phone'
  'regexpr': '(^(0\d{2}-\d{8}(-\d{1,4})?)|(0\d{3}-\d{7,8}(-\d{1,4})?))|(^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,5-9]))\d{8})[ ]*$'

 

python yaml dict对某个特定字符串加上单引号
源数据同上
python脚本:

import re
pattern = re.compile(r'regexpr|' + re.escape(
    '(^(0\d{2}-\d{8}(-\d{1,4})?)|(0\d{3}-\d{7,8}(-\d{1,4})?))|(^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,5-9]))\d{8})[ ]*$') + r'|user_id')
# pattern = re.compile(r'expr|user_id')    #对expr和user_id加上单引号
# pattern = re.compile(r'|')    #对所有的str类型加上单引号
yaml.add_implicit_resolver(None, pattern)
yaml.dump(dict1, sys.stdout, width=1200, default_flow_style=False, sort_keys=False)

运行结果如下:user_id、regexpr和后边那串正则表达式加上了单引号。expr本身是正则,用re.escapte就可以把这些字符自动转义,再用re.compile.

'user_id': 23026
contact:
- name: phone
  'regexpr': '(^(0\d{2}-\d{8}(-\d{1,4})?)|(0\d{3}-\d{7,8}(-\d{1,4})?))|(^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,5-9]))\d{8})[ ]*$'

 

标签:dump,re,python,单引号,yaml,user,id
From: https://www.cnblogs.com/panda4671/p/16783923.html

相关文章

  • 力扣350(java&python)-两个数组的交集 II(简单)
    题目:给你两个整数数组 nums1和nums2,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑......
  • Python的常用库及区别——numpy、pandas、matplotlib、scipy
    1.Numpy  numpy是python科学计算的基础包,好多算法都是基于numpy构建的。其功能有:快速高效的多维数组ndarray用于对数组执行元素及计算以及直接对数组执行数字运......
  • python parser.parse_args action=‘store_true‘ 和 ‘store_false’
    store_true就是存储的值为true(store_false就是存储的值为false),用sh命令触发值的设置:parser.add_argument('-p',action='store_true',default=false)#pythontes......
  • Python基础一
    #变量名是区分大小写的#导入模块儿importrandomfromrandomimport*print('Helloworld!')print(len('HelloWorld'))#str()函数可以传入一个整型值,并求值为它的字符串......
  • 9 月编程语言排行榜:Python 反超 C++,万年不变的前三终于变了
    "IT有得聊”是机械工业出版社旗下IT专业资讯和服务平台,致力于帮助读者在广义的IT领域里,掌握更专业、实用的知识与技能,快速提升职场竞争力。 TIOBE发布了9 月份的编程语......
  • 如何解决python爬虫的ip资源问题
    解决python爬虫的ip资源需求,有以下三种方法:一.采购http代理,api提取此类方法适用于爬虫脚本或软件在本地电脑或服务器终端运行的情况,通过api提取的方式获取海量代理ip,因为ap......
  • PYTHON apdu命令
    A实例化读卡器:pcsc=PcscReader()B获取所有的读卡器列表:readerName=pcsc.get_pcsc_readerlist()readerNameList=readerName.split(';')foriinrange(len(readerN......
  • python高阶函数
    '''defcounter(base):definc(step=1):nonlocalbasebase+=stepreturnbasereturnincfoo=counter(5)foo2=counter(5)print(foo==foo2)'''#sorte......
  • python字典扁平化
    '''source={'a':{'b':1,'c':2},'d':{'e':3,'f':{'g':4}}}target={}deffun(sdict,dictkey=''):fork,vinsdict.items():ifisinstance(v,dict):fun(v,......
  • python写平台学到的东西
    1、env_dict.keys(): 获取字段所有的键,比对字符是否有里面的键 env_key=9env_dict={"1":"dev","2":"test","3":"staging"}ifenv_keynotinenv_dict.keys()......