使用python读写特定的行

时间:2017-07-18 13:14:52

标签: python

我正在开发一个涉及python的小项目。所以我自学了python的基础知识。我知道如何使用python PDE读取和写入文件。但我不确定如何读写特定文件。例如,我有一个文本文件如下:

234, 645, 876
123, 213
642, 097, 563
cohesive_element node numbers
583,  317,  318,  289,  255
584,  318,  319,  290,  289
585,  319,  320,  291,  290
586,  320,  321,  292,  291
587,  321,  322,  293,  292
elset generate
725, 1032, 1033,  965,  964
726, 1033, 1034,  966,  965
727, 1034, 1035,  967,  966
728, 1035, 1036,  968,  967

在这里,我需要读取“cohesive_element节点编号”和“elset generate”之间的数字,并将其写入不同的文本文件中。 谢谢!

2 个答案:

答案 0 :(得分:0)

你可以试试这个:

f = open('filename.txt').readlines()
f = [i.strip('\n') for i in f]

indices = [i for i, a in enumerate(f) if a == "cohesive_element node numbers" or a == "elset generate"]

new_data = [map(int, i.split(", ")) for i in f[indices[0]+1:indices[-1]]]

输出:

[[583, 317, 318, 289, 255],  
[584, 318, 319, 290, 289], 
[585, 319, 320, 291, 290], 
[586, 320, 321, 292, 291], 
[587, 321, 322, 293, 292]]

答案 1 :(得分:0)

可以这样做:

to_be_copied = []

with open('filename.txt') as f:
    valid_line = False
    for line in f.readlines():
        if valid_line:
            to_be_copied.append(valid_line)
        # to determine if we are in the 'valid' block
        valid_line = True if 'cohesive_element' in line else False if 'elset' in line else valid_line

with open('new_file.txt', 'w') as fw:
    fw.write('\n'.join(valid_lines))
相关问题