一个很简单的问题,但对于我的生活,我想不出.
我有以下代码:
os.rename(FileName, FileName.replace(".png","")+"_"+time_stamp.replace(":","-").replace(" ","_")+"_"+name_string+".png")基本上重命名一个图像文件。
我想使用.format()结构,但我不知道如何让.replace()函数使用这个结构。
目前,转换后的代码如下所示:
os.rename(FileName, "{}.replace(".png","")_{}.replace(":","-").replace(" ","_")_{}.png".format(FileName,time_stamp,name_string))目前,给出的错误是第一个替换处的“无效语法”(在“in”(".png“、"”)处插入符号)。
有人能给我指点正确的方向吗?
有没有更好的方法来做我想做的事?
谢谢
发布于 2016-04-04 15:07:41
您使用的格式的基本形式如下:
"Hello {}".format("there")计算结果为输出字符串。
"Hello there"
在其简单形式中,字符串中的每个{}将按顺序被format中的字符串替换。更详细的信息,您可以在这里找到:https://pyformat.info/
发布于 2016-04-04 18:01:53
你需要做的是
os.rename(FileName, "{0}_{1}_{2}".format(FileName.replace(".png",""),
time_stamp.replace(":","-").replace(" ","_"),
name_string+".png"))或更易读
newName = "{rmvFileFormat}_{time}_{addFileFormat}".format(rmvFileFormat = FileName.replace(".png",""),
time = time_stamp.replace(":","-").replace("","_"),
addFileFormat = name_string+".png")
os.rename(FileName, newName)发布于 2016-04-04 15:18:37
replace是一个string方法,您不能在正在格式化的字符串中使用它。你要做的是:
s = "A {} string".format('very nice'.replace(' ', '_'))如果您只想在变量中替换(这似乎是您的目标),或者:
s = "A {} string".format('very nice').replace(' ', '_')如果你想在全球范围内取代。
关于更好的实现方法,我将使用os.path.splitext来拆分扩展,生成已经以正确格式(当然,如果可以控制的话)的时间戳,而不是使用替换,并在os.rename部件之前进行所有替换,因此它更易读(即将正确的字符串存储在变量中,使用format中的字符串,而不是一行)。
https://stackoverflow.com/questions/36406224
复制相似问题