在文本文件的每一行中写入两个特定位置(或者宁愿创建一个新文件,并添加了信息)



有抱负的python newb(2个月)。我正在尝试创建一个程序,将信息插入.txt文件的每行的两个特定位置,实际上在该过程中创建了一个新文件。

源文件中的信息是这样的:

1,340.959,859.210,0.0010,VV53
18abc,34099.9590,85989.2100,0.0010,VV53
00y46646464,34.10,859487.2970,11.4210,RP27

输出将是:

1,7340.959,65859.210,0.0010,VV53
18abc,734099.9590,6585989.2100,0.0010,VV53
00y46646464,734.10,65859487.2970,11.4210,RP27

每行不同,数百行。我要寻找的特定标记是逗号的第一个和第二个事件(,)。在第一个和第二个逗号之后,需要添加这些内容。当您看到代码时,您会知道我的意思。

我已经到了以下目的:该程序找到了正确的位置并插入了我需要的东西,但在新文件中却不写超过1行。我尝试调试并查看发生了什么"引擎盖下",那里的一切都很好。

很多报废代码和下巴握在后来我仍然卡住了一周前。

tl; dr 代码仅输出1行到新文件,需要数百个。

f = open('test.txt', 'r')
new = open('new.txt', 'w')
first = ['7']
second = ['65']
line = f.readline()
templist = list(line)
counter = 0
while line != '':
    for i, j in enumerate(templist):
        if j == ',':
            place = i + 1
            templist1 = templist[:place]
            templist2 = templist[place:]
            counter += 1    
            if counter == 1:
                for i, j in enumerate(templist2):
                    if j == ',':
                        place = i + 1
                        templist3 = templist2[:place]
                        templist4 = templist2[place:]
                        templist5 = templist1 + first + templist3 + second + templist4
                        templist6 = ''.join(templist5)
                        new.write(templist6)
                        counter += 1
                        break                     
                if counter == 2:
                    break
            break
    line = f.readline()
    templist = list(line)
f.close()
new.close()

如果我正确理解您的样本并正确地代码,这可能是一种有效的方法:

with open('test.txt', 'r') as infd, open('new.txt', 'w') as outfd:
    for line in infd:
        fields = line.split(',')
        fields[1] = '7' + fields[1]
        fields[2] = '65' + fields[2]
        outfd.write('{}n'.format(','.join(fields)))

相关内容

最新更新