我发现了一些类似的问题,但没有从python中找到。在
上下文:
我有许多pdf文件(文本),其中有一个表格在其他文本。 表格的位置和大小因文件而异。 我已经尝试过不同的库,但pdftotext是迄今为止最好的。例如tabla就不起作用了。在
目前为止的解决方案:
我使用pdftotext将所有信息提取为一个大字符串,找到始终限定表的子字符串,并将表保存在变量中
不幸的是,我写不出表的全部内容,但是前两行:
D Staph. aureus Ps. aeruginosa E. coli ATCC Ser. Asp. Cand. albicans
a ATCC 6538, ATCC 9027, Ps. 8739, Ent. marcescens brasiliensis ATCC 10231,
由于pdftotext在每行的末尾都放了一个“\n”,所以我可以将表拆分为每一行
我的目标是将这个字符串分成子字符串,就像下面这样的列:
^{pr2}$还有这个:
['ATCC 6538, ', 'ATCC 9027, Ps. ', '8739, Ent. ', 'marcescens ', 'brasiliensis ', 'ATCC 10231,']
例如,第二行是以每15个字符分隔的
我意识到一列的最大长度是15个字符,所以我试着像这样拆分它,n=15:
print([line[i: (i + n)] for i in range(0, len(line), n)])
但我得到的是:
['Staph. aureus ', 'Ps. aeruginosa ', 'E. coli ATCC Se', 'r. ', 'Asp. ', 'Cand. albicans']
这里的问题是如何在不剪切单词的情况下将字符串剪切成子字符串? 我已经意识到,如果我在位置线[I+n]上剪切,位置线[I+n-1]必须等于“”才能不剪切一个单词。在
可以使用
str.split()
将字符串拆分为单词。如果不提供除数器,它将默认使用空格并返回字符串中的单词。请参阅Python官方文档here。在这会有帮助吗?在
输出:
^{pr2}$这将在空白处拆分字符串,然后遍历结果数组并在列表中启动一个新条目(如果单词包含“.”),并将该索引追加到列表中,直到遇到下一个带有“.”的单词。在
我看不到一条规则可以应用于所有行,但通过以下两个示例,我们可以做到:
输出:
看起来很可怕,但希望能给你一些建议。:)
数据似乎是用制表符分隔的,但制表符替换为空格。在
我能发现的唯一模式是列之间有多个空格值。如果这种情况下,如果有两个空格(例如作者键入错误),代码就会中断。在
使用最大列宽是有风险的。如果列的值很短(例如“one”、“two”),则会中断。在
相关问题 更多 >
编程相关推荐