hello? 发表于 2022-7-14 22:56:04

关于一个简单字符串格式化问题

print("%a"%10)
10

1.为什么%a会返回%w就不可以了

temp=time.localtime(os.path.getctime("python.exe"))
print(time.strftime("%d %b %Y %H:%M:%S",temp))

2.就是这段代码中为什么是%d%b%Y%H%M%S,这些字母的条件是什么呢?可以换成其他的吗?
3.上面代码中strtime()的作用

谢谢各位{:10_266:}

Victor0321 发表于 2022-7-15 00:24:15

现在应该都用f-string了把。。。

hello? 发表于 2022-7-15 09:00:42

Victor0321 发表于 2022-7-15 00:24
现在应该都用f-string了把。。。

这是小甲鱼书上的代码

suchocolate 发表于 2022-7-15 09:06:15

1.a=ascii; 字符串格式化没有w这个选项。
2.strftime里的%等语法不能算字符串格式化,是属于strftime专用格式表示。基础知识看教程:https://www.runoob.com/python3/python3-date-time.html
3.同上,看上面的链接教程。

傻眼貓咪 发表于 2022-7-15 11:57:39

Victor0321 发表于 2022-7-15 00:24
现在应该都用f-string了把。。。

虽然看上去,三个字符串格式化中,现在比较多人用 f-string(因为简单好用),但其实其速度上是比较慢的(当然,在简单代码里是感受不到的)
这就是为什么 Python 还保留最初的字符串格式化 % 直到现在。

速度测试:import time
a = 15
b = 3.14
c = 'A'

start = time.time()
for n in range(10000000):
    s = "%d %f %c"%(a, b, c)
end = time.time()
print("% string: ", end - start)

start = time.time()
for n in range(10000000):
    s = "{} {} {}".format(a, b, c)
end = time.time()
print("format string: ", end - start)

start = time.time()
for n in range(10000000):
    s = f"{a} {b} {c}"
end = time.time()
print("f-string", end - start)

hello? 发表于 2022-7-15 16:15:55

傻眼貓咪 发表于 2022-7-15 11:57
虽然看上去,三个字符串格式化中,现在比较多人用 f-string(因为简单好用),但其实其速度上是比较慢的 ...

感谢
页: [1]
查看完整版本: 关于一个简单字符串格式化问题