python总结(三):格式化字符串占位符的三种方法
来源:互联网 发布:如何开通淘宝视频直播 编辑:程序博客网 时间:2024/05/21 19:34
相比与其他动态语言,如scala、javascript(es6版本以上)、groovy等,python处理字符串插值显得较为笨拙,没有在语言中就内置了支持,总结起来,大概有三种方法。
1. 字符串format方法
这是字符串自身携带的方法,非常高效,并且容易理解,建议作为首选,实现方式如下:
# 将函数参数转换为字典def format(**args): tmpl = 'My name is {username}, age is {age}!' # 将字典转换为函数参数格式 return tmpl.format(**args)
上述代码定义了字符串格式化函数,调用的方法如下:
# 测试yiifaa = {'username' : 'yiifaa', 'age' : 32}# 注意调用方式,将字典转换为函数参数print(format(**yiifaa))# 等价的参数调用方式print(format(username='yiifaa', age=32))
更多示例:
# 格式化字典,0代表参数顺序'My name is {0[username]}, age is {0[age]}!'.format({'username':'yiifaa', 'age' : 32})# 注意!r的用法,会直接输出字符串格式,携带单引号'My name is {0[username]!r}, age is {0[age]}!'.format({'username':'yiifaa', 'age' : 32})# 按参数顺序进行格式化'My name is {0}, age is {1}!'.format('yiifaa', 32)# 格式化元组'My name is {0}, age is {1}!'.format(*['yiifaa', 32])
在上面的例子中,请密切注意“!r“的用法,输出的内容会携带字符串类型,如果携带单引号的话,还会自动进行转义,如下:
'My name is {0!r}, age is {1}!'.format(*["'yiifaa", 32])# 输出结果为# 'My name is "\'yiifaa", age is 32!'
2. %格式化方法
这类似于打印输出,结合str方法,也可以将输出转换为字符串,如下:
def format(**args): tmpl = 'My name is %(username)s, age is %(age)d!' # tmpl = 'My name is %(username), age is %(age)!' return str(tmpl % args)
调用方式与第一种方式类似。
3. string.Template方法
严格来说,string都是要被废弃的模块,里面提供的方法几乎没有利用价值,但是Template又让string模块成为了鸡肋,使用方式如下:
def format(**args): tmpl = 'My name is ${username}, age is ${age}!' # 强烈建议使用 return Template(tmpl).safe_substitute(args) #return Template(tmpl).substitute(args)
Template一共提供了两种方法实现插值替换,其中substitute方法与前两种方法一样,如果缺少键值内容的话,都会报错,但是safe_substitute能自动处理键值缺少情况,如传递的参数为(username=’yiifaa’),忽略age键值,那么substitute方法会直接报错,但safe_substitute会自动忽略age键值。
结论
在字符串的处理上,python没有内置语言支持,尤其是类似于ES6那样的变量编译方式,所以功能大打折扣,但是依旧有多种替换方法实现,最后在方法的参数传递上,用**结合变长参数可以统一函数的签名,大幅简化了函数的调用方式。
阅读全文
0 0
- python总结(三):格式化字符串占位符的三种方法
- python 格式化字符串的三种方法
- Python 格式化字符串的三种方法
- python的三种字符串格式化方法
- Python字符串格式化 (%占位操作符)
- 字符串格式化占位符
- 字符串占位符的三种解决方案及其时间性能对比
- java时间格式化的三种方法
- Python格式化字符串的四种方法
- 间接修改Python字符串元素的三种方法
- python 语言实现字符串的拼接(三种方法)
- python三种方法实现字符串拼接
- python中格式化字符串输出的方法总结
- Python格式化字符串的方法
- Android字符串资源使用格式化占位符的正确姿势
- python: 字符串占位符的"{0:2}"
- python 字符串换行的三种方式
- python字符串换行的三种方式
- FL Studio 12.3.73破解版下载
- 事件
- Tcpdump编译
- 算法提高 ADV-209 c++_ch02_04
- 【讲师卡】信息系统项目管理师CSDN课程体系17-18年讲师卡
- python总结(三):格式化字符串占位符的三种方法
- Java课程学习一:Hello World
- 爬取数据时出现网页报错UnsupportedMimeTypeException
- 跟着姜少学Java基础编程之三:变量
- 好东西!DockerScan:Docker安全分析&测试工具
- java基础之ioc和aop
- Java Web 2.2 CSS样式表(2)
- Pentest Tools:收集一套渗透测试中常用的脚本
- ActiveMQ系列—消息协议(Stomp协议)