我试图分析这个文本文件中的一些信息(其中之一) 许多我想以相同的格式分析)
.txt文件中有一个表,其中包含我需要的信息
该表始终有16列,但行数会有所不同
表中的列由管道“|”分隔,行由以下列分隔:'+----------+----------+'
我将文件(.split('+--+')拆分为一个列表('newlist'),其中 元素是一行(行1=newlist[0])
现在我想把这些行分成几行 我可以轻松地使用它们的列。split(“|”)
我创建了一些循环,可以很好地工作并解释一个变量 行数
def row()将newlist放入list\u i list\u i是一个 列出每个元素是该行中一个框的内容的位置(使用 拆分(“|”)对于这个特定的测试文件,我可以转到第(29)行
我对列式数据感兴趣,下一个循环创建一个列表 with column info def column()查看范围(number)中的所有行 ,并为所有这些行提取相同的索引。so栏(9) 将第(0)[9]行、第(1)[9]行……一直拉到最后一行
我的问题是,在我到达第(9)列之前,这个方法很有效,然后 显示列表索引超出范围
对不起,我知道这个问题已经问了很多次了,但是我不知道怎么回事
谢谢你!
输入文件:https://drive.google.com/open?id=0B_JDBrcvs5VcRU1ueE5kUlVoYlk
f = open("999A.txt")
text_in_file = f.read().strip().split('+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+')
f.close()
newlist = []
for item in text_in_file:
newlist.append(item)
matching = [s for s in newlist if ".. image::" in s]
for item in newlist:
if newlist.index(item) >= newlist.index(matching[0]):
newlist.remove(item)
num_rows = len(newlist) - 1
def row(i):
row_i = newlist[i+1]
list_i = list(row_i.strip().split('|'))
return list_i[1:17]
def column(i):
list_i = []
for z in range(num_rows):
list_i.append(row(z)[i])
return list_i[1:]
for i in range(30):
print(row(i))
print("columns:")
for i in range(16):
print(column(i))
不正确,您只有8个头,所以您将在该行中得到一个索引错误。你知道吗
示例代码可以看到这一点
如果希望只获取具有所需列数的行,则需要像这样检查拆分行的长度。你知道吗
样本输出
您可能还希望对列表中的每一对元素进行分组,以保留最初的8列
看起来是这样的
有这样的输出
在此基础上展开,可以打印每个元素
输出
相关问题 更多 >
编程相关推荐