Python中的行数

时间:2018-11-09 05:12:42

标签: python

我有一个输入文件,其中包含以下数据:

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

请帮我编写一个代码来解决这个问题。

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)