capwords函数
将序列中的每个单词变成首字母大写
def capwords(s, sep=None): """capwords(s [,sep]) -> string Split the argument into words using split, cAPItalize each word using cAPItalize, and join the cAPItalized words using join. If the optional second argument sep is absent or None, runs of whitespace characters are replaced by a single space and leading and trailing whitespace are removed, otherwise sep is used to split and join the words. """ return (sep or ' ').join(x.cAPItalize() for x in s.split(sep))
从源码中我们在return处可以看到是先使用了split进行切割(默认走空格切割),然后在使用join进行结果的合并
栗子:
import strings = 'this is old old man'print(s)print(string.capwords(s))
运行后的结果如下
this is old old manThis Is old old ManProcess finished with exit code 0
从运行结果看,可以清晰的看出原本小写的单词,最后变成首字母大写了...
模版拼接也是内置拼接的代替方法,使用string.Template拼接时,要在名字前加前缀$来标识变量(例如:$var),如果要和周围的变量区分的话,那就加一个花括号(例如:${var})。
栗子:
import stringvalues = {'var': 66}t = string.Template("""variable : $varescape : $varvariable in text : ${var}和我拼接""")print(t.substitute(values))print(t.safe_substitute(values))
运行后的结果如下
variable : 66escape : 66variable in text : 66和我拼接variable : 66escape : 66variable in text : 66和我拼接
从上述结果来看,数据是已经替换成功了,唯一不好的就是数据都是字符型,如果参数的类型需要更换,就得再做一层处理... 具体怎么做可自行动手 *** 作
substitute和safe_substitute方法
substitute处理替换时,存在就替换,不存在则抛KeyError错误
safe_substitute处理替换时,存在就替换,不存在就是原参数返回,不会抛错误
栗子:substitute方法
import stringvalues = {'var': 66}t = string.Template("""variable : $varescape : $varmissing : $missingvariable in text : ${var}和我拼接""")print(t.substitute(values))
运行后的结果如下
Traceback (most recent call last): file "/Users/lifeng/python-projects/Test/PythonScripts/python_string.py", line 21, in <module> print(t.substitute(values)) file "/library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/string.py", line 121, in substitute return self.pattern.sub(convert, self.template) file "/library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/string.py", line 114, in convert return str(mapPing[named])KeyError: 'missing'
从上述运行结果可以看出,报错是KeyError:'missing'
栗子:safe_substitute方法
import stringvalues = {'var': 66}t = string.Template("""variable : $varescape : $varmissing : $missingvariable in text : ${var}和我拼接""")print(t.safe_substitute(values))
运行后的结果如下
variable : 66escape : 66missing : $missingvariable in text : 66和我拼接Process finished with exit code 0
从上述运行结果看,没有参数替换的参数,就原参数返回,且不会报错
可能有些时候我们觉得$符号不舒服,想更换一种符号用,那这样我们就可以继承Template进行重写 *** 作
class MyTemplate(string.Template): delimiter = '!'l = MyTemplate("""variable : !varescape : !varmissing : $missingvariable in text : ${var}和我拼接""")print(l.substitute(values))
在上述代码中我们只是把源码中的delimiter变量的值修改了,运行后的结果如下
上述代码中我们把定界符$符号修改成了!符号,参数替换也是成功的,当然你如果想重写别处代码也是可以的,因为Template这个类本身就有正则表达式,只要源码看得懂那就改起来吧...
以上总结或许能帮助到你,或许帮助不到你,但还是希望能帮助到你,如有疑问、歧义,评论区留言会及时修正发布,谢谢!
未完,待续…
一直都在努力,希望您也是
微信搜索公众号:就用python
总结
以上是内存溢出为你收集整理的python:String-模版替换 *** 作全部内容,希望文章能够帮你解决python:String-模版替换 *** 作所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)