0

我正在尝试按照以下方式做一些事情:

string = "this is my %s string" % (foo)
list = ["first", "second", "g", "last"]     
for entry in list:
    foo = entry
    print(string)

虽然似乎 foo 需要在字符串之前声明,并且在我的 for 循环之前对字符串进行评估。我还缺少更多 Pythonic 的东西吗?

4

2 回答 2

3

它应该是:

string = "this is my %s string"
l = ["first", "second", "g", "last"]     
for entry in l:
    print(string % entry)

印刷:

this is my first string
this is my second string
this is my g string
this is my last string

请注意,调用变量list是一种不好的做法,因为它会隐藏内置。

于 2013-10-01T22:22:21.937 回答
1
fmt_str ='out {}'

for val in ["a", "b", 1]:
    print fmt_str.format(val)

印刷:

out a
out b
out 1

您需要在循环内对字符串进行格式化。当您格式化字符串(使用旧%样式或新样式format)时,它会返回结果,而不是绑定 over 的函数foo

新样式文档

于 2013-10-01T22:23:24.533 回答