如何使用python从大文本文件中仅检索表格数据

时间:2015-06-10 04:26:07

标签: python

我有一个大文本文件,它也包含表格形式数据 我想从表格形式中检索数据,从标题开始直到文件中表格的末尾(不知道20或30行之后结尾可能在哪里,不同文件的标题和结尾可能不同) 我应该忽略文件中的所有文本,只需要表格形式并放在一个单独的文件中。

实施例: 顶级生命科学集群中的品牌和主导市场存在, 包括大波士顿,湾区,Shoojhriwp,

------

  Header
Row1  val1 val2 val3
ROw2  val1 --   ---
row    ""   ""  ""
""     ""   "" """
""

(May be end of the table)

again the text........
.........................
,,,,,,,,,,,,,,,,,,,,,,,

那么,我如何从表中检索数据(与文本文件中的表格格式相同)并将其放在文件中。

我尝试了一些东西并且无法正常工作

2 个答案:

答案 0 :(得分:0)

所以你可以做的一件事是逐行读取文件,一旦你到达表的标题(我假设你事先知道表头是什么样的),你可以在它上面使用split方法你在空格(或可能是逗号)上分开它并记录这些数据。假设表中的数据遵循固定结构,一旦split的结果数不同,每行的列数相同,则可以停止从文件中记录数据。

以下是使用str.split()方法的方法

假设你有一个字符串

line = "col1 col2 col3"
column_list = line.split()

column_list现在是[" col1"," col2"," col3"]

由于在此示例中列表中只有3个元素,因此您可以在存储表格每行的值之前检查列表的大小。如果列表的大小与之前的行不同,则表示您已经到达文件中表格的末尾

答案 1 :(得分:0)

最简单的方法就是这样(安装了Pandas)

from StringIO import StringIO
import pandas as pd

f = open('path/to/file.txt', 'r')
fileobj = StringIO(f.read())
dataframe = pd.read_csv(fileobj, header=0,
                        sep='\t', engine="python")

除非我看到具有正确格式的更详细的示例,否则很难为其编写代码。