在特定文本字段之间提取数据

时间:2014-05-30 23:25:48

标签: parsing

在Python代码中,打开文本文件后,如何让它在特定的文本体中提取数据。我会使用正则表达式来记录文本文件正文中的所有数据吗?

文本文件示例:

启用电影:

        Channel 1: News

        Channel 2: Entertainment

停用电影

启用电视节目

        Channel 1: News

        Channel 2: Entertainment

禁用电视节目

我的代码目标只是从启用电视节目中提取新闻和娱乐,以禁用电视节目并将其存储到列表中,而不会将数据从启用电影存储到禁用电影。

打印类别的所需输出:

[新闻]

而不是,

[新闻,新闻]

我有重复数据的原因的代码段示例:

    category = []
    with open("Data.txt") as f1:
        for line in f1:
                x = re.search(r'(?<=(Channel 1:\s)\w+',line)
                if x:
                    category.append(x.group())
        print category

一旦看到标题启用电视节目并在看到禁用电视鞋后停止在列表中存储项目,您是否可以将所有内容存储在列表中?

2 个答案:

答案 0 :(得分:1)

如果您想获得唯一值,可以将列表转换为集合myset = set(mylist),以便

myset = set(category)
print myset 

对于clearnees我把我的另一个答案放在这里,因为它没有在评论中显示确定:

    with open('file.txt') as input_data:
      for line in input_data: 
       if line.strip() == 'Enable TV Shows': 
      break 
     for line in input_data:
      if line.strip() == 'Disable TV shows': 
       break
     print line or store in list

答案 1 :(得分:0)

用于新闻\d: (E.*) enter image description here

的娱乐:(.*)C

enter image description here