Python 错误文本替换代码:

Python 错误文本替换代码:,python,string,replace,Python,String,Replace,我似乎不明白为什么我一直得到这个错误的输出 输入文件: ff1 ff2 ff3 ff10 ff11 ff20 ff21 ff23 gb20 gb10 gh23 输出文件: FF01 FF02 FF03 FF010 FF011 FF020 FF021 FF023 GB020 GB010 GH023 代码: 导入操作系统 导入系统 #目录是我们将从中工作的目录 directory=“C:\\Users\\user\\Desktop” chdir(目录) 重命名内容=[“ff”、“gb”、“gh”

我似乎不明白为什么我一直得到这个错误的输出

输入文件:

ff1
ff2
ff3
ff10
ff11
ff20
ff21
ff23
gb20
gb10
gh23
输出文件:

FF01
FF02
FF03
FF010
FF011
FF020
FF021
FF023
GB020
GB010
GH023
代码:

导入操作系统
导入系统
#目录是我们将从中工作的目录
directory=“C:\\Users\\user\\Desktop”
chdir(目录)
重命名内容=[“ff”、“gb”、“gh”]
oldFile=open(“New Text Document.txt”)
buffer=oldFile.read()
对于重命名内容中的项目:
对于范围(0,50)内的i:
如果i<10:
buffer=buffer.replace(item+str(i),item.upper()+“0”+str(i))
其他:
buffer=buffer.replace(item+str(i),item.upper()+str(i))
outFile=open(“test.txt”、“w”)
outFile.write(缓冲区)
outFile.close()
oldFile.close()
需要发生什么:

我正在尝试将ff替换为大写(完成),然后我需要将零添加到
小于或等于9的所有数字中。所以我认为
如果我小于10
就足够了;但这并不是因为它在9的上面加0。我尝试了
len(str(I))
来确保它的长度只有一个,但仍然不起作用;我遗漏了什么?

只需使用:

只需使用:


以下是一个简单的解决方案:

with open("New Text Document.txt") as oldFile:
    with open("test.txt", "w") as outFile:
        for line in oldFile:
            start, end = line[:2], line[2:]
            outfile.write(start.upper() + end.strip().zfill(2) + '\n')
如果只希望使用大写前缀,请执行以下操作:

with open("New Text Document.txt") as oldFile:
    with open("test.txt", "w") as outFile:
        for line in oldFile:
            start, end = line[:2], line[2:]
            if start in renameWhat:
                start = start.upper()
            outfile.write(start + end.strip().zfill(2) + '\n')

以下是一个简单的解决方案:

with open("New Text Document.txt") as oldFile:
    with open("test.txt", "w") as outFile:
        for line in oldFile:
            start, end = line[:2], line[2:]
            outfile.write(start.upper() + end.strip().zfill(2) + '\n')
如果只希望使用大写前缀,请执行以下操作:

with open("New Text Document.txt") as oldFile:
    with open("test.txt", "w") as outFile:
        for line in oldFile:
            start, end = line[:2], line[2:]
            if start in renameWhat:
                start = start.upper()
            outfile.write(start + end.strip().zfill(2) + '\n')

原始解决方案不起作用的原因是它没有检查它是否匹配整行/单词/数字。例如,用
FF01
替换
ff1
后,您的缓冲区现在是:

FF01
ff2
ff3
FF010
FF011
ff20
ff21
ff23
gb20
gb10
gh23

原始解决方案不起作用的原因是它没有检查它是否匹配整行/单词/数字。例如,用
FF01
替换
ff1
后,您的缓冲区现在是:

FF01
ff2
ff3
FF010
FF011
ff20
ff21
ff23
gb20
gb10
gh23

你不是指
行[:2]
等而不是
缓冲区
?你只是勉强在这方面打败了我!你不是指
行[:2]
等而不是
缓冲区
?你只是勉强在这方面打败了我!对于这么简单的东西,不需要正则表达式——这就是内置字符串方法的用途。@agf:True。不过,这也很简单,其实不需要正则表达式来完成这么简单的事情——这就是内置字符串方法的用途。@agf:True。但话说回来,这很简单,其实并不重要,我不相信我错过了这样一个基本的错误;但这并不是很明显的错误。我只是添加了文件扩展名来修复它。我几乎不相信我错过了这样一个基本的错误;但这并不是很明显的错误。我只是添加了文件扩展名来修复它。感谢这是python提示符的直接粘贴。我相信你指的是预加。这是python提示符的直接粘贴。我相信你的意思是准备。
FF01
ff2
ff3
FF010
FF011
ff20
ff21
ff23
gb20
gb10
gh23