Python文本常量怎样进行高效处理方式
Admin 2022-07-19 群英技术资讯 502 次浏览
在程序中,有很多高效率的字符串处理方式,如果开发者能够完全掌握这些高效的字符串处理,往往在开发者也能事半功倍。比如针对于字符串的处理,也是自然语言处理的基础知识。
而python3中,处理字符串的库为:string。本篇将详细介绍各种字符串的高效处理方式。
对于英文单词组成的字符串来说,很多时候,我们需要对英文的首字母进行大写的变更。如果没有了解其高效率的函数,一般我们都通过循环,判断空格,取空格后一位的字母,判断其在ASCII中的编码后,取其大写替换掉该位置的字符串。
但是,python3中有一个函数可以直接将首字母大写,该函数为capwords()。下面,我们来通过一小段代码实现首字母大写的字符串变更。
import string s = "When he shewed the riches of his glorious kingdom and the honour of his excellent majesty many days, even an hundred and fourscore days" print("原始字符串") print(s) result = string.capwords(s) print("首字母大写字符串") print(result)
运行之后,我们会得到全大写首字母字符串:
在string库中,字符串模板函数为string.Template(),它可以用来拼接字符串。示例代码如下:
import string values = { "name": "liyuanjing", "age": "13", } s = """My name is : $name I am $age years old """ template_str = string.Template(s) print(template_str.substitute(values))
这里,我们使用字符串模板string.Template,然后通过函数substitute()进行字符串替换。
不过,这里有可能替换时values字典中没有对应的key怎么办?string库还给我们提供了一个函数safe_substitute()。
import string values = { "name": "liyuanjing", "age": "13", } s = """My name is : $name I am $age years old $work """ template_str = string.Template(s) print(template_str.safe_substitute(values))
因为字典没有对应的值进行替换,所以会保留原始的字符串数据。效果如下:
上面的模板使用方法是string库默认提供的规则体系。其实,我们还可以自定义模板的使用匹配方法,具体代码如下:
import string class MyTemplate(string.Template): delimiter = '@' idpattern = '[a-z]+_[0-9]+' values = { "name_1": "liyuanjing", "age_1": "13", } s = """My name is : @name_1 I am @age_1 years old @work_1 """ template_str = MyTemplate(s) print(template_str.safe_substitute(values))
这里,delimiter代表需要匹配的符号,默认符号"$",博主替换成了‘@'。其次,idpattern是values对应的key名字规则,这里用正则表达式规定,比如是"字符串_数字"。运行之后,效果如下:
基本用法
有过其他语言基础的都应该或多或少接触过format字符串替换。这里,我们直接来看看其基本的使用方式:
print("My name is {}".format("liyuanjing"))#大括号匹配,按顺序依次填充 print("My {1} is {0}".format("liyuanjing","name"))#数字匹配,按位置依次填充 print("My {name} is {tom}".format(tom="liyuanjing",name="name"))#关键字匹配,按关键字填充
运行之后,效果如下:
format函数不仅可以匹配替换字符串,还可以通过它对其文本,或者取小数某几位等等。下面,我们来看看这些用法如何实现
print('{} and {}'.format('tom', 'Jerry')) print('{:10s}'.format('*')) # 默认左对齐 print('{:>10s}'.format('*')) # 右对齐 print('{:^10s}'.format('*')) # 中间对齐 print('{:<10s}'.format('*')) # 左对齐 print('{} is {:.2f}'.format(3.411592653, 3.1415926))#取2位小数 values = { "name_1": "liyuanjing", "age_1": "13", } s = """My name is : {name_1} I am {age_1} years old """ print(s.format(**values))
注释已经非常详细,这里不在赘述。效果如下:
format除了能做上面这些事情之外,还可以转换进制以及ASCII码符号等等。下面,我们来实现这些高阶用法。
print('{:b}'.format(8))#:b转换为二进制 print('{:c}'.format(200))#:c转换Unicode字符串 print('{:d}'.format(111))#:d转换十进制 print('{:o}'.format(8))#:o转换八进制 print('{:x}'.format(32))#:x转换十六进制 print('{:e}'.format(32))#:e转换幂符号 print('{:%}'.format(0.32))#:%转换百分值 print('{:n}'.format(32000000000))#:n就是数值 print('{:g}'.format(32000000000))#:n也是数值,不过特别大时转换为幂科学计数
运行之后,效果如下:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要介绍了pytest结合csv模块实现csv格式的数据驱动,使用python中的csv模块来处理csv文件,结合pygtest的参数化处理方式来实现ddt,本文通过示例代码给大家介绍的非常详细,需要的朋友参考下吧
这篇文章主要介绍了搭建Pytorch 和 Tensorflow v1 兼容的环境,本文是小编经过多次实践得到的环境配置教程,给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
这篇文章主要介绍了keras中训练数据的几种方式对比(fit和fit_generator),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
这篇文章主要介绍了Python多线程入门学习,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
我们可以通过列表生成式简单直接地创建一个列表,但是受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008