将非列文本文件转换为CSV / Excel列

时间:2019-11-13 07:34:32

标签: java python regex csv text

我有一个输入文本文件,其中包含逐页从PDF中提取的数据。 此输入文本文件不具有列和行格式的所有数据。 我如何将其转换为文件格式的csv或excel,如图所示按列和行排列的数据。 我已经附加了样本输入文件以及所需的样本输出文件。 有免费软件或Java / Python吗?我应该如何开始?此过程的任何潜在客户均受到高度赞赏。

输入文件和逻辑 Input File and Logic

输出文件 Output File

输入文件 https://drive.google.com/file/d/1Ak0pqpJApp0KlIDxub3txbacTQf_OJOK/view?usp=sharing

输出文件 https://drive.google.com/file/d/1AiUsyE5lddtfw16OcoU8WNIzFS8yjKOd/view?usp=sharing

1 个答案:

答案 0 :(得分:0)

您必须基本上编写一个解析器。解析可以通过基本的字符串操作来完成。然后可以通过pandas to excel之类的库来写入excel文件。

解析:

以下是一些有用的解析提示:

string.split()

这将使您可以在每个空格处分割文本。例如

>>> "Hello    World".split()
['Hello', 'World']

现在,如果零件始终处于相同的独立位置,则可以通过建立索引来获取它们。 要在单独的列表中获得每一行,您可以执行以下操作:

text = "Your text you read from the file. \n with some \n newlines \n"
lines = text.split("\n")

假设您现在需要第3行的某些内容:

line3 = lines[3]

现在,您可以计算行和空格的索引,并可以创建有关如何获取信息的规则。

带有re的正则表达式:

如果您有可以用正则表达式表示的模式,则可以使用此模块。

例如,您希望所有日期都采用(dd / mm / yy)格式:

>>> import re
>>> text = "19/02/99 or another date 26/12/12 non valid date 12/12/1999"
>>> re.findall(r"[0-9]{2}\/[0-9]{2}\/[0-9]{2}", text)
['19/02/99', '26/12/12', '12/12/19']

其他有用的功能可能是:searchfinditer

评估和测试正则表达式的非常有用的工具是:regex101

如果您还有其他疑问或想要了解有关某个特定主题的更多详细信息,欢迎在评论中提问。