Python:为每个元素及其子元素创建一个子列表

我正在从事一个从 pdf 中提取文本的项目。

在提取文本并为每个标题和段落分配标签后,我想将它们的索引添加到新列表中以定位每篇文章。

这是示例列表:

['p','','标题','p',','标题']

  1. 遍历列表并创建一个列表列表,其中包含每个列表的文章索引
  2. 每篇文章都有一个标题和几个元素,如p、s 例如
article-index = [[article1],[article2],[article3]]
article-index = [[header,p,s,p],[header,s]]
  1. 我最初的方法是使用下面的函数获取每个标题的位置,以找到两个标题之间的范围。然后找出其他标签的位置,忽略空字符串。
def get_position(list_,tag):
    #convert list to an array
    array = np.array(list_)
    #return an array of position of searched item
    index = np.where(array == tag)[0]
    return index
----
get_position(list,'header')
----
array([3,13,31])

输出:

articles_index = [[4,5,6,9,10],[13,14,15,16,18,19],[21]]

感谢您的意见。

rockyhmrr 回答:Python:为每个元素及其子元素创建一个子列表

我认为此解决方案可能对您有所帮助:

解决方案 1:

import copy

a=['p','','header','p','s','header']

b=[]

# Now wanted to create a sub-list after the "header" string. b=[[header,p,s,p],[header,s]]

for j in range(len(a)):
    try:
        index_remover=a.index('')
        del a[index_remover]
    except:
        pass
a_copy=copy.copy(a)
index=0
indexes=[]
for k in a:
    # all instace finder
    if k=='header':
        indexes.append(index)
    index+=1
for j in range(len(indexes)):
    try:
        b.append(a[indexes[0]:indexes[1]+1])
        del indexes[0]
    except:
        pass

解决方案 2:

a=['p','header']
b=[]

for j in range(len(a)):
    try:
        index_remover=a.index('')
        del a[index_remover]
    except:
        print(Exception)
    
for i in a:
    index_finder=a.index('header')
    b.append(a[0:index_finder-1])
    del a[0:index_finder+1]
    
 print(b) 
本文链接:https://www.f2er.com/913.html

大家都在问