【发布时间】:2019-03-06 12:33:47
【问题描述】:
动机
假设您有一个字符串在一个字符串中使用了两次。然而,在一种情况下它是上层的,而另一种情况下它是下层的。如果使用字典,解决方案似乎是添加一个大写的新元素。
假设我有一个准备好格式化为的 python 字符串:
string = "{a}_{b}_{c}_{a}"
期望输出:
HELLO_by_hi_hello
我还准备了一本字典:
dictionary = {a: "hello", b: "bye", c: "hi"}
无需与字典交互即可将新元素d 设置为"HELLO" 如:
dictionary['d'] = dictionary['a'].upper()
string = "{d}_{b}_{c}_{a}"
string.format(**dictionary)
print(string)
>>> HELLO_bye_hi_hello
有没有办法将元素a 设置为在字符串的一种情况下始终为大写?例如:
string= "{a:upper}_{b}_{c}_{a}"
string.format(**dictionary)
print(string)
>>> HELLO_bye_hi_hello
【问题讨论】:
-
@shmee 不幸的是,我正在使用 2.6.6,我会这样标记它。同样,(我知道乞丐不应该是一个选择者)我不喜欢在 print 语句中指定字典名称。
-
我能想到的最简洁的方法是:
string.format(**{**dictionary, 'a' : dictionary['a'].upper()})在其中展开两个字典,内部展开负责upper()调用,另一个只是将字典传递给格式。
标签: python string string-formatting python-2.x