python - Python3 - 生成具有相同键名的关联数组
问题描述
考虑下面的循环,它遍历 PDF 中的每一页,读取文本,然后将 PDF 页面进一步划分为使用定义的列位置:
列位置定义如下(通过命令行):
'{"1":{"position":"15"}, "2":{"position": "20"}}'
这是我的脚本:
npages = 2 # Number of pages in the PDF.
column = {}
for n in range(npages):
for i, col in enumerate(COLUMNS):
out = [...] #The specific text from the PDF page, inside the defined column area
column[i+1] = ({"row": str(out)})
现在,考虑我有一个两页长的 PDF 文件。它包含以下文本:
第 1 页:
Page 1 Col 1 Text Page 1 Col 2 Text
第2页:
Page 2 Col 1 Text Page 2 Col 2 Text
目前,我的代码将输出如下:
{
"1":{
"row":"Page 2 \u2013 Col 1.\n\n\f"
},
"2":{
"row":"Page 2 \u2013 Col 2\n\n\f"
}
}
所以,理想情况下,我想做的是生成一个 JSON 输出,如下所示:
{
"1":[
{
"row":"Page 1 Col 1 Text"
},
{
"row":"Page 2 Col 1 Text"
}
],
"2":[
{
"row":"Page 1 Col 2 Text"
},
{
"row":"Page 2 Col 2 Text"
}
],
}
所以基本上,列的边界将在所有页面之间共享 - 并且每列的内容必须添加到正确的列索引中,并且在每一\n
新行上out
,它应该进一步添加到row
列索引内的索引中。
这甚至可以用 Python3 实现吗?我会更好地保存 PDF 文件的文本内容,然后根据文件夹中的每个文件创建 JSON 字符串吗?
解决方案
假设您的示例中的其他所有内容都有效 - 使用defaultdict并column
附加您的信息。:
import collections
column = collections.defaultdict(list)
for n in range(npages):
for i, col in enumerate(COLUMNS,1):
out = [...] #The specific text from the PDF page, inside the defined column area
column[i].append({"row": str(out)})
推荐阅读
- typescript - Promise.resolve(null) 的目的是什么
- django - 使用 Apache2 + mod_wsgi + django 出现随机 500 错误“远程结束关闭连接而无响应”
- javascript - 绑定事件监听器并保持元素为 this
- java - 如何在控制器层测试特定条件?
- c - getchar() function to count characters in C
- c# - 如何通过 NSubstitute 监视方法返回值
- python-3.x - 将字典/列表拆分为单独的列
- ruby-on-rails - Rails form_for 助手认证参数?
- react-native - 如何在 React Native 上实现 Background Fetch | 世博会?
- react-native - 无法从 react-native 中的 navigation.geolocation.getCurrentPosition() 返回位置