在python中读取文本文件的一部分

时间:2017-06-18 14:00:10

标签: python

我有一个如下所示的文本文件,我想只使用python:

读取data3中的所有内容
.......
.......
.......
data1 (
        .......  
)
data2( 
        ........; 
) 



data3 ( 
        a:  1.4e10  ;
        b: 0.3  ;
        Name:   Mat1;
) 


data4( 
        linear; 
)
.......
.......
.......

这就是我的所作所为:

    f = open(text.txt).readlines()

for line in f:
    if line.startswith("data3 ( \n"):
        currentLine = f.readline()
        if line.startswith(") \n"):
            break 
    print (currentLine)

我试图运行这个程序,但我得到了这个:

currentLine = f.readline()

AttributeError: 'list' object has no attribute 'readline'

2 个答案:

答案 0 :(得分:0)

您的问题是f不是文件对象而是列表,因为您已经使用了readlines()。行for line in f:已经遍历各行,您应该查看如何读取文件,它比您预期的要简单得多。您的代码还有另一个问题,您不记得您找到了data3,因此其他条目从未打印过。

试试这个:

data3 = []

with open("text.txt") as f:
    found_data3 = False

    for line in f:
        if line.startswith("data3"):
            found_data3 = True

        if found_data3:
            if line.startswith(")"):
                break
            else:
                data3.append(line)

print("\n".join(data3))

答案 1 :(得分:0)

此代码将搜索两点之间的线:

rr = [] #Array for saving lines    
for f in file_list:
    with open(f, 'rt') as fl:
        lines = fl.read()
        lines = lines[lines.find('data3'):lines.find('data4')] 
        rr.append(lines)