我有一个输入文件,其中包含以下数据:
0.0 0.000 0.0000 0.000 0.000
0.1 0.000 0.0000 0.000 0.000
0.2 0.000 0.0000 0.000 0.000
0.3 0.000 0.0000 0.000 0.000
0.4 1.7637 232323 23232 234242
0.65 21344 2134214 412412 214124
0.55 23423 32423 32423 32423
我需要在仅包含零的最后一行之后添加内容,这意味着要在0.3之后添加一行。 我需要输出为
0.0 0.000 0.0000 0.000 0.000
0.1 0.000 0.0000 0.000 0.000
0.2 0.000 0.0000 0.000 0.000
0.3 0.000 0.0000 0.000 0.000
0.4 0.000 0.0000 0.000 0.000
0.5 1.7637 232323 23232 234242
0.75 21344 2134214 412412 214124
0.65 23423 32423 32423 32423
请提供代码帮助我,以达到所需的输出。 我尝试过的是:
for line in f1:
string=line
if rthcount<=6:
strplit=string.split()
rign=strplit[1]
if rign==0.0:
print(string)
else:
f4.write(string)
rthcount+=1
请帮我编写一个代码来解决这个问题。
答案 0 :(得分:0)
delete_this = ''
for line in f1:
if all(float(part) == 0.0 for part in line.split()[1:]):
f4.write(delete_this)
delete_this = line # new candidate to remove
else:
f4.write(line)
delete_this = '' # removed
编辑:新要求!
add_this = None
for line in f1:
if all(float(part) == 0.0 for part in line.split()[1:]):
add_this = '0.000 0.000 0.000 0.000\n'
elif add_this:
f4.write(line.split()[0] + ' ' + add_this)
add_this = None
f4.write(line)
编辑:更多要求
import itertools
add_this = None
line_number = ('0.{} '.format(n) for n in itertools.count())
for line in f1:
line = line.split(None, 1)[1]
if all(float(part) == 0.0 for part in line.split()):
add_this = '0.000 0.000 0.000 0.000\n'
elif add_this:
f4.write(next(line_number) + add_this)
add_this = None
f4.write(next(line_number) + line)
编辑:再次有新的要求
add_this = None
value_to_add = 0
for line in f1:
prefix, line = line.split(None, 1)
if all(float(part) == 0.0 for part in line.split()):
add_this = '{} 0.000 0.000 0.000 0.000\n'.format(
float(prefix) + value_to_add + 0.1)
elif add_this:
f4.write(add_this)
add_this = None
value_to_add += 0.1
f4.write('{} {}'.format(float(prefix) + value_to_add, line)