python - Python:为每个元素及其子元素创建一个子列表
问题描述
我正在做一个从pdf中提取文本的项目。
在提取文本并为每个标题和段落分配标签后,我想将它们的索引添加到新列表中以定位每篇文章。
这是示例列表:
['p', '', '', 'header', 'p', 's', 'p', '', '', 'p', 's', '', '', 'header' , 'p', 'p', 's', '', 'p', 's', '', '标题']
- 遍历列表并创建一个列表列表,其中包含每个列表的文章索引
- 每篇文章都有一个标题和几个元素,例如 p, s eg
article-index = [[article1], [article2], [article3]]
article-index = [[header, p, s, p, p], [header, p, p], [header, p, p, s]]
- 我最初的方法是使用下面的函数来获取每个标题的位置,以找到两个标题之间的范围。然后找出其他标签的位置并忽略空字符串。
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]]
感谢您的输入。
解决方案
我认为这个解决方案可能会帮助你:
解决方案1:
import copy
a=['p', '', '','header', 'p', 's', 'p', '', '', 'p', 's', '', '','header', 'p', 'p', 's', '', 'p', 's', '', 'header']
b=[]
# Now wanted to create a sub-list after the "header" string. b=[[header, p, s, p, p], [header, p, p], [header, p, p, 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', 'p', 's', 'p', '', '', 'p', 's', '', '','header', 'p', 'p', 's', '', 'p', 's', '', '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)
推荐阅读
- c# - 使用 Catch 的十进制豁免
- html - 如何使表格在一列中有两行
- python - 如何加速用于在python中加入字符串列的groupby应用函数
- windows - ApacheDS - 默认服务无法在 Windows 上启动
- flutter - 来自 Json 的 DateFormat 解析
- xcode - carplay setRootTemplate 崩溃(允许的类:(null))
- documentation - 如何在 chargify 中找到对帐单的状态?即,如果它没有支付?
- websocket - 如何在竞争消费者场景中重定向消息
- python - 如何放入测试真正的 zip 文件并处理提取的文件
- java - 在eclipse中将通用Lib文件夹添加到Javaproject