如何使用f-string实现与str.format等价的文件名处理功能?
如何使用f-string实现与str.format等价的文件名处理功能?
嘿,这个转换其实超简单,核心思路和你原来用str.format的逻辑完全一致——先把文件名按下划线拆分,再把需要的部分拼接起来,只是换用f-string的语法而已~
首先理清楚原代码的逻辑:你通过filename.split('_')把文件名拆分成了一个字符串列表,然后用str.format按位置索引取对应元素拼接。换成f-string的话,我们可以先把拆分后的结果存到一个变量里,然后直接在f-string里引用列表的索引:
parts = filename.split('_') final_name = f"{parts[0]}{parts[1]}{parts[2]}_{parts[4]}_new"
这样运行后,和你原来的代码效果完全一致,比如输入文件名2024_10_10_091530_xyz_new.txt,就能得到20241010_xyz_new。
如果你觉得直接写索引可读性不够好,还可以把拆分后的元素解包到具名变量里,代码会更清晰:
# 用下划线忽略不需要的第4个元素(091530),*_忽略后面的其他内容 year, month, day, _, code, *_ = filename.split('_') final_name = f"{year}{month}{day}_{code}_new"
这种写法更直观,别人一看就知道每个部分对应的含义,维护起来也更方便~
备注:内容来源于stack exchange,提问作者BSachin
相关产品推荐
相关产品推荐

