Answers:
print s % tuple(x)
代替
print s % (x)
print s % (x)
是OP写的,我只是引用他/她。
foo = (bar, )
:)
(x)
为了清楚起见,我使用该符号。如果以后再添加其他变量,它也可以避免忘记括号。
您应该看一下python 的format方法。然后,您可以像这样定义格式字符串:
>>> s = '{0} BLAH BLAH {1} BLAH {2} BLAH BLIH BLEH'
>>> x = ['1', '2', '3']
>>> print s.format(*x)
'1 BLAH BLAH 2 BLAH 3 BLAH BLIH BLEH'
%
操作员只打开元组的包装。
s
更加复杂,因为我需要包括递增数字,而不是仅%s
针对每个位置。s
是通过许多不同的步骤构建的,因此仅包含%s
令牌就容易得多。
print u'%(blah)d BLAHS %(foo)d FOOS …' % {'blah': 15, 'foo': 4}
。
s = '{} BLAH {} BLAH BLAH {} BLAH BLAH BLAH'
由于我刚刚学到了这个很酷的东西(从格式字符串中索引到列表中),所以我添加了这个老问题。
s = '{x[0]} BLAH {x[1]} FOO {x[2]} BAR'
x = ['1', '2', '3']
print (s.format (x=x))
输出:
1 BLAH 2 FOO 3 BAR
但是,我仍然没有弄清楚如何进行切片(在格式字符串'"{x[2:4]}".format...
中),并且很想弄清楚是否有人有想法,但是我怀疑您根本无法做到这一点。
这是一个有趣的问题!处理可变长度列表的另一种方法是构建一个充分利用该.format
方法和列表拆包的功能。在下面的示例中,我不使用任何特殊的格式,但是可以轻松地对其进行更改以满足您的需求。
list_1 = [1,2,3,4,5,6]
list_2 = [1,2,3,4,5,6,7,8]
# Create a function that can apply formatting to lists of any length:
def ListToFormattedString(alist):
# Create a format spec for each item in the input `alist`.
# E.g., each item will be right-adjusted, field width=3.
format_list = ['{:>3}' for item in alist]
# Now join the format specs into a single string:
# E.g., '{:>3}, {:>3}, {:>3}' if the input list has 3 items.
s = ','.join(format_list)
# Now unpack the input list `alist` into the format string. Done!
return s.format(*alist)
# Example output:
>>>ListToFormattedString(list_1)
' 1, 2, 3, 4, 5, 6'
>>>ListToFormattedString(list_2)
' 1, 2, 3, 4, 5, 6, 7, 8'
(x)
和一样x
。在Python中,将单个标记放在方括号中没有意义。您通常将括号放在foo = (bar, )
以使其更易于阅读,但功能foo = bar,
却完全相同。