我有这个需要替换文件扩展名的脚本,但是没有这样做:
import os
import sys
#directory is the directory we will work from
directory = "C:\\Users\\joe\\Desktop"
os.chdir(directory)
whatToLookFor = ["Ca", "Cb", "Cd", "Ce", "Cf", "Cg", "Ch", "Ci", "Cj", "Ck", "Cl", "Cm", "Cn", "Co",
"Fa", "Fb", "Fc", "Fd", "Fe", "Ff", "Fg", "Fh", "Fi", "Fk", "Fl", "Fm", "Fn", "Fo",
"Fp", "Ga", "Gb", "Gc", "Gd", "Ge", "Gf", "Gg", "Gh", "Gi", "Gj", "Gk", "Gn", "Ja",
"Jb", "Jc", "Jd", "Je", "Jf", "Jg", "Jh", "Jk", "Jl", "Jm", "Fj", "cc", "cb", "cd",
"ce", "cf", "cg", "ch", "ci", "cj", "ck", "cl", "cm", "cn", "co", "fa", "fb", "fc",
"fd", "fe", "ff", "fg", "fh", "fi", "fk", "fl", "fm", "fn", "fo", "fp", "ga", "gb",
"gc", "gd", "ge", "gf", "gg", "gh", "gi", "gj", "gk", "gn", "ja", "jb", "jc", "jd",
"je", "jf", "jg", "jh", "jk", "jl", "jm", "fj"]
oldFile = open("links.htm", "r")
newFile = open("python test.htm", "w")
buffer = oldFile.read()
for item in whatToLookFor:
for x in range(0, 80):
if x < 10:
buffer = buffer.replace(item + str(x), item.upper() + "-0" + str(x))
else:
buffer = buffer.replace(item + str(x), item.upper() + "-" + str(x))
newFile.write(buffer)
oldFile.close()
newFile.close()
文件ff10在不应该更改为FF-010时。它应该改为FF-10
答案 0 :(得分:2)
在不知道你的实际输入是什么的情况下,很难提供帮助,但是,我确实注意到了一件事。看起来你正在尝试确保缓冲区中有两位数字(在whatToLookFor中的项目之后)。
如果这是真的,如果你取代它,生活可能会更容易:
if x < 10:
buffer = buffer.replace(item + str(x), item.upper() + "-0" + str(x))
else:
buffer = buffer.replace(item + str(x), item.upper() + "-" + str(x))
使用:
sx = str(x)
tmp = sx if len(sx) >= 2 else "0" + sx
buffer = buffer.replace(item + sx, item.upper()+ "-" + tmp)
或者,甚至更好:
buffer = buffer.replace(item + str(x), "%s-%02d" % (item.upper(), int(x)) )
答案 1 :(得分:1)
文件ff10在不应该更改为FF-010时。它应该改为FF-10
对于“应该”的某些定义。实际上,您的代码正在识别ff1
部分并将其更改为FF-01
。额外的0已经在缓冲区中了。
如果你愿意,你可以在这里敲打你的额头--> <--
答案 2 :(得分:0)
您
if x < 10:
条件对于0-9为真,对于10+为假。这就是你在#10上遇到错误行为的原因。将其更改为:
if x <= 10:
至少对我来说,经常发生这种情况会让你感到惊讶。