【发布时间】:2014-12-18 21:59:53
【问题描述】:
但是,我有以下代码,最后一个 "_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')
知道我做错了什么吗?
【问题讨论】:
-
没有理由这样做
!s,因为这是默认格式代码。只需使用{}。 -
@iCodez:不,不是;
!s在对象上调用__format__之前应用str()。在 Python 3 中使用'{}'.format(b'')尝试,然后使用'{!s}'.format(b'')再次尝试。 -
@iCodez:例如,标准
object.__format__()不支持格式化程序,因此'{:20}'.format(b'')失败,但'{!s:20}'.format(b'')成功。object.__format__()返回str(self),但不会让您应用格式化程序。'{!s:20}'.format(b'')将字节对象转换为字符串首先,然后应用格式化程序。 -
@iCodez:(是的,
'{}'.format(b'')有效,因为没有格式化指令,这是我的错误)。
标签: python python-3.x