gpt4 book ai didi

python - 将一个文本文件中的行替换为另一个文本文件中的行

转载 作者:太空宇宙 更新时间:2023-11-03 18:08:27 29 4
gpt4 key购买 nike

我是Python新手,我正在尝试一个新问题,但无法得到解决方案。我有一个名为replace.txt 的文本文件,其内容如下:

 81, 40.001, 49.9996, 49.9958
82, 41.1034, 54.5636, 49.9958
83, 44.2582, 58.1856, 49.9959
84, 48.7511, 59.9199, 49.9957
85, 53.4674, 59.3776, 49.9958
86, 57.4443, 56.6743, 49.9959
87, 59.7, 52.4234, 49.9958

现在我还有一个名为实际数据的文件,它有大量数据,如上面的数据,现在我想通过匹配第一个数字(例如在实际数据中搜索“81”)来替换实际数据.txt 中的上述行。 txt 并将其替换为replace.txt 中包含“81”的行

这里的actualdata.txt看起来像这样:

--------lines above--------
81, 40.0 , 50.0 , 50.0
82, 41.102548189607, 54.564575695695, 50.0
83, 44.257790830341, 58.187003960661, 50.0
84, 48.751279796738, 59.921728571875, 50.0
85, 53.468166336575, 59.379329520912, 50.0
86, 57.445611860313, 56.675542227082, 50.0
87, 59.701750075154, 52.424055585018, 50.0
88, 59.725876387298, 47.674633684987, 50.0
89, 57.511209176153, 43.398353484768, 50.0
90, 53.558991157616, 40.654756186166, 50.0
91, 48.853051436724, 40.06599229952 , 50.0
92, 44.335578609695, 41.75898487363 , 50.0
93, 41.139049269956, 45.364964707822, 50.0
94, 4.9858306110506, 4.9976785333108, 50.0
95, 9.9716298556132, 4.9995886389273, 50.0
96, 4.9712790759448, 9.9984071508336, 50.0
97, 9.9421696473295, 10.002460334272, 50.0
98, 14.957223264745, 5.0022762348283, 50.0
99, 4.9568005100444, 15.000751982196, 50.0
------lines below----------

我该怎么做,请帮助我,我正在尝试使用文件输入和替换,但我没有得到输出。

这是我仍在即兴创作的示例代码(这是一行的工作 fyn):

oldline='        82,  41.102548189607,  54.564575695695,  50.0'
newline=' 81, 40.001, 49.9996, 49.9958'

for line in fileinput.input(inpfile, inplace = 1):
print line.replace(oldline,newline),

这是我最终编写的代码:

replacefile= open('temp.txt','r')
for line1 in replacefile:
newline = line1.rstrip()
rl=newline
rl=rl.split()
search =rl[0]
with open(inpfile) as input:
intable = False
for line in input:
fill=[]
if line.strip() == "*NODE":
intable = True
if line.strip() == "---------------------------------------------------------------":
intable = False
if intable:
templine=(line.rstrip())
tl=line.rstrip()
tl= tl.split()
if tl[0] == search:
oldline=templine
for line2 in fileinput.input(inpfile, inplace = 1):
line2.replace(oldline,newline)

但是我无法获得输出,actualdata.txt 的内容正在被删除,请帮我解决这个问题我想要的输出是更改actualdata.txt,如下所示:

  -------lines above------
81, 40.001, 49.9996, 49.9958
82, 41.1034, 54.5636, 49.9958
83, 44.2582, 58.1856, 49.9959
84, 48.7511, 59.9199, 49.9957
85, 53.468166336575, 59.379329520912, 50.0
86, 57.445611860313, 56.675542227082, 50.0
87, 59.701750075154, 52.424055585018, 50.0
88, 59.725876387298, 47.674633684987, 50.0
89, 57.511209176153, 43.398353484768, 50.0
90, 53.558991157616, 40.654756186166, 50.0
-------lines below------

最佳答案

使用fileinput 就地替换行的模块:

import fileinput
def get_next_line(fptr):
x = fptr.readline()
if(x != ''):
return x.strip(), x.strip().split()[0].strip()
else:
return '',''

f = open("replace.txt", "r")

f_line, f_line_no = get_next_line(f)

for line in fileinput.input("actualdata.txt", inplace=True):
if(line.strip().split()[0].strip() == f_line_no): #if line number matches
print(f_line) # write newline
f_line, f_line_no = get_next_line(f) # Get next newline
else: # Otherwise
print(line.strip()) # write original one

顺便说一句,我正在使用python3。如果您使用的是python2

,请进行适当的更改

关于python - 将一个文本文件中的行替换为另一个文本文件中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26417574/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com