ric*_*hid 20 python string string-interpolation
鉴于:
dict = {"path": "/var/blah"}
curr = "1.1"
prev = "1.0"
Run Code Online (Sandbox Code Playgroud)
插入字符串以生成以下内容的最佳/最短方法是什么:
路径:/ var/blah curr:1.1上一篇:1.0
我知道这有效:
str = "path: %(path)s curr: %(curr)s prev: %(prev)s" % {"path": dict["path"],"curr": curr, "prev": prev}
Run Code Online (Sandbox Code Playgroud)
但我希望有一个更短的方式,例如:
str = "path: %(path)s curr: %s prev: %s" % (dict, curr, prev)
Run Code Online (Sandbox Code Playgroud)
如果这看起来像是一个过于迂腐的问题,我道歉.
Tri*_*ych 50
你可以试试这个:
data = {"path": "/var/blah",
"curr": "1.1",
"prev": "1.0"}
s = "path: %(path)s curr: %(curr)s prev: %(prev)s" % data
Run Code Online (Sandbox Code Playgroud)
mon*_*kut 23
当然,您可以使用较新的(来自2.6).format字符串方法:
>>> mydict = {"path": "/var/blah"}
>>> curr = "1.1"
>>> prev = "1.0"
>>>
>>> s = "path: {0} curr: {1} prev: {2}".format(mydict['path'], curr, prev)
>>> s
'path: /var/blah curr: 1.1 prev: 1.0'
Run Code Online (Sandbox Code Playgroud)
或者,如果所有元素都在字典中,您可以这样做:
>>> mydict = {"path": "/var/blah", "curr": 1.1, "prev": 1.0}
>>> "path: {path} curr: {curr} prev: {prev}".format(**mydict)
'path: /var/blah curr: 1.1 prev: 1.0'
>>>
Run Code Online (Sandbox Code Playgroud)
从str.format()文档:
这种字符串格式化方法是Python 3.0中的新标准,应该优先于新代码中字符串格式化操作中描述的%格式.
Ale*_*lli 14
为什么不:
mystr = "path: %s curr: %s prev: %s" % (mydict[path], curr, prev)
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我已经更改了一些你在使用内置名称的踩踏的名字 - 不要这样做,它永远不需要,偶尔会浪费你很多时间来追踪它造成的不当行为(使用的东西)内置名称,假设它意味着内置,但你用我们自己的变量的名称隐藏它).
hug*_*own 13
也许:
path = dict['path']
str = "path: %(path)s curr: %(curr)s prev: %(prev)s" % locals()
Run Code Online (Sandbox Code Playgroud)
我的意思是它有效:
>>> dict = {"path": "/var/blah"}
>>> curr = "1.1"
>>> prev = "1.0"
>>> path = dict['path']
>>> str = "path: %(path)s curr: %(curr)s prev: %(prev)s" % locals()
>>> str
'path: /var/blah curr: 1.1 prev: 1.0'
Run Code Online (Sandbox Code Playgroud)
我只是不知道你是否考虑更短.
您还可以(很快)在 Python 3.6 中使用f 字符串,这可能是格式化字符串的最短方法:
print(f'path: {path} curr: {curr} prev: {prev}')
Run Code Online (Sandbox Code Playgroud)
甚至把你所有的数据放在一个字典中:
d = {"path": path, "curr": curr, "prev": prev}
print(f'path: {d["path"]} curr: {d["curr"]} prev: {d["prev"]}')
Run Code Online (Sandbox Code Playgroud)
如果将数据放入字典中,您可以执行以下操作:
data = {"path": "/var/blah","curr": "1.1","prev": "1.0"}
"{0}: {path}, {1}: {curr}, {2}: {prev}".format(*data, **data)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
36711 次 |
| 最近记录: |