python字符串格式中的元组?

Posted

技术标签:

【中文标题】python字符串格式中的元组?【英文标题】:Tuples inside of python string formatting? 【发布时间】:2018-04-12 23:15:05 【问题描述】:

基本上,我正在尝试模板化 Latex 代码,其中我需要输出 B_i 之类的字符串,并且我想调用字符串格式来更改 i。但问题是,当我想在输出的字符串中维护元组时,使用 Python 的字符串格式(它使用元组来表示参数)给我带来了麻烦。

示例

假设我有:

subscript = "22"
value = "10"
stringy = "B_0 = 1".format(subscript, value)"

当我打印stringy 时,我得到:

B_0 = 10

我想得到:

B_22 = 10

【问题讨论】:

转义字符? 这与元组有什么关系?您的代码中没有元组,str.format() 没有“使用元组来表示参数”。 【参考方案1】:
print("B_0 = 1".format(subscript, value)) 

将在输出中打印出一个 字符,因此您需要另一个 才能实际访问该变量

【讨论】:

【参考方案2】:

将外部大括号加倍以避开那些,因此总共有 3 对:

stringy = "B_0 = 1".format(subscript, value)
print(stringy)
# B_22 = 10

在您当前的解决方案中可以看到,双括号 ... 被转义并且不参与格式化。因此,您需要包括那层额外的大括号。

【讨论】:

【参考方案3】:

你快到了。您正确地将 字符加倍,以便它们在格式化结果中逐字出现。但是,您现在没有任何用于第一个值的占位符,它需要在格式字符串中表示为 0

所以:

stringy = "B_0 = 1".format(subscript, value)

【讨论】:

【参考方案4】:

你还需要一对大括号:

subscript = "22"
value = "10"
stringy = "B_0 = 1".format(subscript, value)

print(stringy)  # 'B_22 = 10'

这是因为您需要使用 double ("") 来打印文字大括号。 外面的两个打印文字,中间的0subscript 替换。

【讨论】:

以上是关于python字符串格式中的元组?的主要内容,如果未能解决你的问题,请参考以下文章

Python - 字典理解中的元组解包

Python中的元组和列表

如何删除一些额外的元组和列表并在python中的字符串之间打印一些额外的东西?

Python字典到排序的元组,这可以做得更好吗?

Python的元组列表截取

Python中的字符串覆盖优化