替换文件python中每行的第一个字符



我试图替换多个txt文件中行中的一些第一个字符,并使用此代码,但输出错误:

for filename in glob.glob('./labels/**/*.txt', recursive=True):
with open(filename, 'r') as f:
original_lines = f.readlines()
with open(filename, 'w') as out:
for line in original_lines:
if line.startswith('0'):
line0 = line
out.write(line0)
if line.startswith('1'):
line1 = line
out.write(line1)
if line.startswith('2'):
line2 = line
out.write(line2)
if line.startswith('3'):
line3 = line
out.write(line3)
if line.startswith('5'):
line4 = '4' + line[1:]
out.write(line4)
if line.startswith('7'):
line5 = '5' + line[1:]
out.write(line5)
if line.startswith('9'):
line6 = '6' + line[1:]
out.write(line6)
if line.startswith('10'):
line7 = '7' + line[1:]
out.write(line7)
if line.startswith('11'):
line8 = '8' + line[1:]
out.write(line8)
if line.startswith('12'):
line9 = '9' + line[1:]
out.write(line9)

所以如果我有一个这样的文件:

0.2 0.4 0.8

12 0.1 0.1 0.25

7 0.66 0.80 0.91

我希望输出为:

0.2 0.4 0.8

9 0.1 0.1 0.25

5 0.66 0.80 0.91

我认为您有一些切片问题,例如,假设您的输入是12 0.1 0.1 0.25line[1:]将是2 0.1 0.1 0.25,因为您的输入为字符串。你可以使用类似的东西:

line = '12 0.1 0.1 0.25'.split(' ') #convert your string to a list
temp = int(line[0]) #get first element and convert to integer to make comparisons easier
if temp < 3:
print(' '.join(line))
elif temp == 5: 
line[0] = '4'
print(' '.join(line))
elif temp == 7:
line[0] = '5'
print(' '.join(line))
elif temp > 8:
line[0] =str(temp - 3)
print(' '.join(line))
#Output: 
9 0.1 0.1 0.25

注意:在您的情况下,最好使用elif而不是if,因为如果其中一个条件为真,则不会检查其余条件。更多信息点击这里

相关内容

  • 没有找到相关文章

最新更新