使用python读写特定行

使用python读写特定行,python,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, 3

我正在做一个涉及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
这里,我需要读取“内聚元素节点编号”和“elset generate”之间的编号,并将其写入另一个文本文件中。 谢谢

您可以尝试以下方法:

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]]
可以这样做:

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))

什么是python PDE?到目前为止您尝试了什么。这似乎是一个简单的if-else或更好的问题,regexI不明白这是一个Python特有的问题。只要阅读文件,用正则表达式或简单的搜索找到边界,然后写下中间的内容。我建议你从Python教程开始。它将向您展示如何读取文件。你还需要学习如何将问题分解成更小的部分。例如,如果我正在这样做,我会首先编写一个程序,打开一个文件并将其内容打印到屏幕上。你能做那么多吗?非常感谢。这对我也有用。还是不明白怎么回事。我想我有很多东西要学python。