为了账号安全,请及时绑定邮箱和手机立即绑定

python拆分字符串而不切割单词

python拆分字符串而不切割单词

慕桂英4014372 2021-07-30 23:00:16
我发现了一些类似的问题,但没有来自 python。上下文:我有许多 pdf 文件(文本),其中有一个表格和其他文本。表的位置和大小因文件而异。我已经尝试过不同的库,但到目前为止 pdftotext 是最好的。例如,tabula 不起作用。到目前为止的解决方案:我使用 pdftotext 将所有信息提取为一个大字符串,找到始终分隔表格的子字符串并将表格保存在变量中不幸的是,我无法写出表格的全部内容,但前两行:D  Staph. aureus  Ps. aeruginosa E. coli ATCC Ser.             Asp.           Cand. albicansa  ATCC 6538,     ATCC 9027, Ps. 8739, Ent.     marcescens     brasiliensis   ATCC 10231,由于 pdftotext 在每行的末尾放置一个“\n”,我可以将表格拆分为每一行我的目标是将此字符串分成子字符串作为列,如下所示:['Staph. aureus', 'Ps. aeruginosa', 'E. coli ATCC', 'Ser.', 'Asp.', 'Cand. albicans']还有这个:['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']这里的问题是如何在不切割单词的情况下切割子字符串中的字符串?我已经意识到,如果我在位置 line[i + n] 上剪切,则位置 line[i+n-1] 必须等于 " " 才能不剪切一个单词。
查看完整描述

3 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

数据似乎以制表符分隔,但制表符替换为空格。

我能发现的唯一模式是列值之间的多个空格。如果是这种情况,如果有双空格(例如作者的拼写错误),您的代码就会中断。

使用最大列宽是有风险的。如果列具有短值(例如“一”、“二”),它会中断。


查看完整回答
反对 回复 2021-08-03
  • 3 回答
  • 0 关注
  • 102 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信