加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

如何从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子类化为更奇特的东西;例如,为每个已解析的字段名称调用Formatter.get_field()方法,因此子类可以更加努力地找到要使用的正确对象.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读