Python文本文件搜索值并编译找到的结果

时间:2013-08-07 14:48:46

标签: python

我有一个包含大量实验结果的大型文本文件来搜索我需要编译的特定数据片段。文本文件包含许多不同实验的结果,我需要将每个实验的数据保存在一起。

e.g。 (不是实际数据)

Object 1

The colour of the object is blue.
The size of the object is 0.5 m^3
The mass of the object is 0.8 g

Object 2

The colour of the object is pink.
The size of the object is 0.3m^3
etc.

我知道我想要的值在哪里,因为我可以在文本中搜索我知道将出现在数据所在行上的特定短语。

我想到的一种方法是在文件中搜索每个特定的行(我正在寻找两个不同的变量),并将所需的值添加到列表中。然后,我将为每个对象创建一个字典,假设每个列表中的相同数字将是来自同一对象的数据。

e.g。

variable_one = []
variable_two = []

def get_data(file):
    with open("filename.txt", "r") as file:
        for line in file:
            if "The colour" in line:
                variable_one.append(line.split()[6]) 
            if "The mass" in line:
                variable_two.append(line.split()[6]) 

        file.close()

或者,搜索文件并创建一个列表,每个条目都是来自不同对象的数据部分,然后从列表中的不同项目中搜索每个对象的两个变量 - 再次最终存储字典中每个对象的值。

我想知道的是,如果有比我的想法更有效/更好的方法吗?

2 个答案:

答案 0 :(得分:0)

你这样做的方式一般对我来说很好,除了我在评论中提到的区域,如果你的行短于6个字,索引会导致错误。

答案 1 :(得分:0)

这是一种替代方案,它只使用一个列表并使用较少的“附加”而不是“内”,因此应该更有效。

variables = []

with open('filename.txt') as input:
    colour = mass = ''
    for line in input:
        fields = line.split()
        if len(fields)>6:
            value = fields[6]
            if 'The colour' in line:
                colour = value
            elif 'The mass' in line:
                mass = value
        elif line.startswith('Object'):
            variables.append((colour, mass))
            colour = mass = '' # may not be needed.
del(variables[0])