无法将变量放入列表中

时间:2014-12-18 21:59:53

标签: python python-3.x

我有以下代码,但是最后一个"_36.0_sumoprce.txt"是唯一一个获取日期的,没有其他的。

dates = time.strftime("%Y%m%d")
files_to_remove = ("{!s}_23.0_sumoocop.txt","{!s}_36.0_sumoprce.txt", "{!s}_35.0_sumoeprc.txt".format(dates, dates, dates))

print(files_to_remove)

我目前看到的内容:

('{!s}_23.0_sumoocop.txt', '{!s}_36.0_sumoprce.txt', '20141218_35.0_sumoeprc.txt')

应该打印什么:

('20141218_23.0_sumoocop.txt', '20141218_36.0_sumoprce.txt', '20141218_35.0_sumoeprc.txt')

知道我做错了什么吗?

1 个答案:

答案 0 :(得分:2)

您需要分别在每个字符串上调用str.format() ;你没有在前两个字符串上调用它:

files_to_remove = (
    "{!s}_23.0_sumoocop.txt".format(dates),
    "{!s}_36.0_sumoprce.txt".format(dates),
    "{!s}_35.0_sumoeprc.txt".format(dates)
)

或者你可以使用列表compreshension:

files_to_remove = ("{!s}_23.0_sumoocop.txt", "{!s}_36.0_sumoprce.txt", "{!s}_35.0_sumoeprc.txt")
files_to_remove = [s.format(dates) for s in files_to_remove]

请注意,此处!s完全冗余,因为dates已经是字符串对象。