2016-03-03 69 views
0

我是新来的蟒蛇,我期待解析一些文本文件(〜5000),看起来像这样的数据:分析文本文件

随机文本...
ID:ABC123456

随机文本...

标题

包含的文本

随机文本...

每个文件都有约3000行,我想提取包含线标题到的ID和文字一个csv文件,帽子看起来像这样:

ID Text

ABC123456包含的文本1

ABC123457包含的文本2

希望得到任何帮助!

以下是我有:

f = open("test.txt",'r') 
while True: 
    text = f.readline() 
    if 'Title' in text: 
     print text 
+1

你有没有试图编码任何东西?这些尝试失败的地方在哪里? – Andy

+0

嗨安迪,谢谢你的回复。我刚开始使用f.readline()来解析文件。但是,阅读整个文件需要很长的时间。我想知道是否有更快的方法来解析这些文件? –

+0

你可以发布该代码,所以我们不是盲目的? :) – acdr

回答

0

尝试把这样的事情在你的while循环中,readline行之后:

id = None 
title_set = True 
f = open("test.txt",'r') 
while True: 
    text = f.readline() 
    if text.startswith("ID: "): 
     id = text[4:].strip() # The strip() is to remove the newline 
    if text == "End": 
     title_set = False 
    if text == "Title": 
     title_set = True 
    if title_set and id is not None: 
     print(id + " " + text.strip()) 

只要你想他们这应该打印所有行(禁止一些格式化)。

将这些行写入另一个文件归结为将print(...)替换为other_file.write(...),其中other_file是用写入权限打开的另一个文件的句柄。

+0

非常感谢,@acdr!这工作得很好。我的实际文件稍微复杂一些,但我应该可以从这里获取。如果我需要更多帮助,我会伸出援手。非常感谢。 –