如何从format()方法的字符串中获取变量名称
发布时间:2020-12-20 12:06:10 所属栏目:Python 来源:网络整理
导读:可以说我有这条线: "My name is {name}".format(name="qwerty") 我知道变量名是name,所以我可以填写它. 但是,如果{}内的单词总是发生变化,如下所示: "My name is {name}""My name is {n}""My name is {myname}" 我希望能够这样做: "My name is {*}".forma
可以说我有这条线:
"My name is {name}".format(name="qwerty") 我知道变量名是name,所以我可以填写它. "My name is {name}" "My name is {n}" "My name is {myname}" 我希望能够这样做: "My name is {*}".format(*=get_value(*)) *是{}是{}内的任何单词 希望我很清楚. 编辑: def get_value(var): return mydict.get(var) def printme(str): print str.format(var1=get_value(var1),var2=get_value(var2)) printme("my name is {name} {lastname}") printme("your {gender} is a {sex}") 有了这个,我不能硬编码printme函数里面的任何变量. 解决方法
您可以使用
string.Formatter() class自行解析格式以列出所有引用:
from string import Formatter names = [fn for _,fn,_,_ in Formatter().parse(yourstring) if fn is not None] 演示: >>> from string import Formatter >>> yourstring = "My name is {myname}" >>> [fn for _,_ in Formatter().parse(yourstring) if fn is not None] ['myname'] 您可以将Formatter子类化为更奇特的东西;例如,为每个已解析的字段名称调用 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- 如何处理在Django中不共享同一域的前端
- Python tempfile模块和线程不是很好玩;我究竟做错
- 手把手|100行Python代码自动抢火车票!(包教包
- python字符串排序方法
- python – Pandas Dataframe查找所有列等于的行
- python – 作为实时kafka消费者的Flask API
- 如何在django中停止verbose_name的自动大写
- 启用rest_framework.permissions.DjangoModelPer
- 【python】RuntimeError: Lock objects should o
- Python安装Numpy和matplotlib的方法(推荐)
热点阅读