从文本文件中提取特定数据

时间:2018-10-03 14:16:41

标签: python python-3.x python-2.7 split

大家好,我有一个包含一些随机信息的文件,但我只想要对我来说很重要的部分。

name: Zack
age: 17
As Mixed: Zack:17
Subjects opted : 3
Subject #1: Arts
name: Mike
age: 15
As Mixed: Mike:15
Subjects opted : 3
Subject #1: Arts

上面是我的文本文件的示例,我希望将 Zack:17 Mike:15 部分写入文本文件,并忽略所有其他内容。 / p>

我观看了一些YouTube视频,并在python中遇到了split语句,但这没用。

我的代码示例

with open("/home/ninja/Desktop/raw.txt","r") as raw:
    for rec in raw:
        print rec.split('As Mixed: ')[0]

这不起作用。 任何帮助都会真正帮助我完成这个项目。 谢谢。

2 个答案:

答案 0 :(得分:1)

您可以在As Mixed处拆分数据,并且仅获取content = [i.strip('\n').split(': ') for i in open('filename.txt')] results = [b for a, b in content if a.startswith('As Mixed')] 参数

['Zack:17', 'Mike:15']

输出:

with open('filename.txt', 'w') as f:
  for i in results:
    f.write(f'{i}\n') 

要将结果写入文件:

/**
 * Get subdocuments belonging to this documentset with intermediate model
 */
public function subdocuments()
{
    return $this->hasManyThrough(
            docflow_subdocuments::class, 
            docflow_subsets::class,
            'docflow_documentset_id',
            'docflow_subset_id'
        );
}

答案 1 :(得分:0)

尝试一下

(Mike|Zack):(\w*)

这使用正则表达式来查找所需的值,基本上:先找到Mike或Zack,然后再找到 <nav id="navbar" class="navbar navbar-default"> <div class="container"> <ul class="nav navbar-nav"> <li class="nav-item"><a href="#">1</a></li> <li class="nav-item"><a href="#">2</a></li> <li class="nav-item"><a href="#">3</a></li> <li class="nav-item"><a href="#">4</a></li> <li class="nav-item"><a href="#">5</a></li> <li class="nav-item"><a href="#">6</a></li> <li class="nav-item"><a href="#">7</a></li> </ul> </div> </nav> 个字符,然后再找到尽可能多的单词。 要了解有关正则表达式的更多信息,请访问以下网站:https://docs.python.org/3.4/library/re.html