字符串中插入变量
2017-03-23 15:05
10 查看
今天谈一个字符串中插入变量的话题,算是读python cookbook理解之后的总结吧
@python >>>s='{} has RMB {}' >>>s.format('kss',100) 'kss has RMB 100' #以上是普通的替换,经常也可以以'%s has RMB %d'%(name,num)的形式出现,但是format性能更佳,不多说. #看一下插入变量 >>>s='{name} has RMB {n}' >>>s.format('kss',100) Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'name' #报错了,注意,如果字符串中是以变量名的形式插入,那么填坑的时候需要传递键值对 >>>s.format(name='kss',n=100) 'kss has RMB 100' #-------------害羞的分隔线--------------- #以上是普通的用法,简单方便,现在来看一下深入一点的 >>>name='kss' >>>n=50 >>>s='{name} has RMB {n}' >>>s.format_map(vars()) 'kss has RMB 50' #format_map和format功能一样,获取的是dict类型的对象来给字符串填坑而不是format的keyword,vars()获取上下文环境中定义的变量,返回键值对,也就是dict #vars()还有一个特例就是还可以直接获取类对象,比如: >>>class Info: def __init__(self,name,n): self.name=name self.n=n >>>a=Info('kss','30') >>>s.format_map(vars(a)) 'kss has RMB 30' #---------又是一条害羞的分隔线--------------- #format,format_map也有缺陷,缺陷是当提供的参数不足是就会报错,比如: >>>s='{name} has RMB {n}' >>>s.format(name='kss') Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'n' #为了让系统性能提高一些,我们可以这样做避免上面的得异常 >>>class safesub(dict): def __missing__(self,key): return '{'+key+'}' >>>s='{name} has RMB {n}' >>>name='kss' >>>s.format_map(safesub(vars())) 'kss has RMB {n}' #看,这样子就不会报错了,而是把变量原样输出 #--------------这是一条霸气的分隔线--------------------- #如果字符串中插入变量,替换变量这种操作在你的程序中经常用到,你可以把这种操作固定成一种函数来简化,方便使用,比如: >>>import sys >>>def sub(text): return text.format_map(safesub(sys._getframe(1).f_locals)) #然后你就可以为所欲为了 >>>name='kss' >>>n=0 >>>s='{name} has RMB {n}' >>>sub(s) 'kss has RMB 0' >>>print(sub('hello, my name is {name}')) 'hello, my name is kss' #好了,基本已经演示完了,更多的内容需要自己勤动手,实践出真知...
相关文章推荐
- PHP正在进行时-变量详解及字符串动态插入变量
- python在字符串中插入变量
- 关于不用任何中间变量快速插入字符串的方法
- Ruby on Rails学习拾遗(一)—字符串中插入变量
- android string.xml的字符串中插入变量
- python 字符串插入变量
- 插入时间字符串时oracle报1861错误,是因为64位的Windows2003时间环境变量导致
- 插入数据库记录时候“输入字符串的格式不正确。 ”
- 有没有什么方法可以调用字符串变量,使其像一般语句一般执行.
- 一个从来不曾注意的问题,在C#语言中,对于字符串变量的赋初值问题!!
- C# 在SQL语句中加入字符串变量
- 字符数组名与字符串指针变量名的区别(转)
- 定义字符串变量,设置初值方便编程
- Zee的LR脚本练习二:比较两个字符串变量
- [急]Oracle Clob字段插入数据库时报:字符串长度过长
- 存储过程中拆分传入的字符串,并插入到表中
- 将字符串变量转换为控件指针
- Zee的LR脚本练习三:比较两个字符串变量
- 把字符串赋给变量,然后执行,模糊查询的问题
- pl/sql中在where in()子句里怎么使用字符串变量来传递查询条件?