python:String-模版替换操作

2021/5/2 14:25:15

本文主要是介绍python:String-模版替换操作,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

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 string


s = 'this is old old man'
print(s)

print(string.capwords(s))

运行后的结果如下

this is old old man
This Is Old Old Man

Process finished with exit code 0

从运行结果看,可以清晰的看出原本小写的单词,最后变成首字母大写了...

 

模版

模版拼接也是内置拼接的代替方法,使用string.Template拼接时,要在名字前加前缀$来标识变量(例如:$var),如果要和周围的变量区分的话,那就加一个花括号(例如:${var})。

栗子:

import string


values = {'var': 66}


t = string.Template("""
variable :   $var
escape  :   $var
variable in text    :   ${var}和我拼接
""")
print(t.substitute(values))
print(t.safe_substitute(values))

运行后的结果如下

variable :   66
escape  :   66
variable in text    :   66和我拼接


variable :   66
escape  :   66
variable in text    :   66和我拼接

从上述结果来看,数据是已经替换成功了,唯一不好的就是数据都是字符型,如果参数的类型需要更换,就得再做一层处理... 具体怎么做可自行动手操作

 

substitute和safe_substitute方法

  1. substitute处理替换时,存在就替换,不存在则抛KeyError错误

  2. safe_substitute处理替换时,存在就替换,不存在就是原参数返回,不会抛错误

栗子:substitute方法

import string

values = {'var': 66}


t = string.Template("""
variable :  $var
escape  :   $var
missing :   $missing
variable 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 string

values = {'var': 66}


t = string.Template("""
variable :  $var
escape  :   $var
missing :   $missing
variable in text    :   ${var}和我拼接
""")
print(t.safe_substitute(values))

运行后的结果如下

variable :  66
escape  :   66
missing :   $missing
variable in text    :   66和我拼接


Process finished with exit code 0

从上述运行结果看,没有参数替换的参数,就原参数返回,且不会报错

 

 

可能有些时候我们觉得$符号不舒服,想更换一种符号用,那这样我们就可以继承Template进行重写操作

class MyTemplate(string.Template):
    delimiter = '!'


l = MyTemplate("""
variable :  !var
escape  :   !var
missing :   $missing
variable in text    :   ${var}和我拼接
""")
print(l.substitute(values))

在上述代码中我们只是把源码中的delimiter变量的值修改了,运行后的结果如下

上述代码中我们把定界符$符号修改成了!符号,参数替换也是成功的,当然你如果想重写别处代码也是可以的,因为Template这个类本身就有正则表达式,只要源码看得懂那就改起来吧...

 

 

以上总结或许能帮助到你,或许帮助不到你,但还是希望能帮助到你,如有疑问、歧义,评论区留言会及时修正发布,谢谢!

 


 

未完,待续…

一直都在努力,希望您也是

 

微信搜索公众号:就用python

 

 



这篇关于python:String-模版替换操作的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程