【问题标题】:Why can .format() not be used separately from the declaration? [duplicate]为什么 .format() 不能与声明分开使用? [复制]
【发布时间】:2018-05-14 09:17:02
【问题描述】:

有人可以向我解释一下 .format() 方法是怎么回事,它只适用于字符串声明,而不适用于包含字符串的变量?

以下是工作代码和失败代码的示例以及每个代码的输出

# This works fine
s = "{0} \n" \
    "{1} \n" \
    "{2}\n" \
    .format("Hello", "world", "from a multiline string")
print(s)

# This does not
f = "{0} \n" \
    "{1} \n" \
    "{2}\n"

f.format("Hello", "world", "from a multiline string")
print(f)

各自的输出

Hello 
world 
from a multiline string

{0} 
{1} 
{2}

我已经尝试过没有大括号中的数字({})以及分配名称({aname})和传递关键字参数。我想了解第一个和第二个示例在 format 方法如何处理它们方面的区别,以及是否有办法格式化包含与实际声明分开的字符串的变量。

【问题讨论】:

  • 因为.format()str对象的方法。
  • @mika72 f 包含一个 str 对象 print(type(f)) 输出 <class 'str'>
  • 你错过了一个细节,基本上是一个错字:print(f.format("Hello", "world", "from a multiline string")) 是你需要的。

标签: python string python-3.x format


【解决方案1】:

它正在工作,但您需要重新分配它,因为它不是就地的(= 它创建一个新的字符串对象,就像任何其他 str 方法一样)。

f = "{0} \n" \
    "{1} \n" \
    "{2}\n"
f = f.format("Hello", "world", "from a multiline string")
print(f)
#  Hello 
#  world 
#  from a multiline string

【讨论】:

  • 哦,我的话...当您在凌晨 4:30 编码并且您习惯于睡觉时,就会发生这种情况。时间一到我就会接受。感谢深空
【解决方案2】:

因为.format函数返回格式化字符串。

它不会格式化调用它的字符串,但它会返回一个具有格式化结果的新字符串对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-03
    • 2019-11-15
    • 2014-01-08
    • 1970-01-01
    • 1970-01-01
    • 2012-05-07
    • 2011-01-09
    • 2020-08-19
    相关资源
    最近更新 更多