java - 将非柱状文本文件转换为柱状 CSV/Excel

标签 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

最佳答案

你基本上必须编写一个解析器。解析可以通过基本的字符串操作来完成。然后可以通过像 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

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

关于java - 将非柱状文本文件转换为柱状 CSV/Excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58832303/

相关文章:

java - 对同一项目中的多个模块使用/公开服务调用组合

python - Tensorflow 估计器 : how to use tf. graph_util.convert_variables_to_constants

python - 将 URL 转换为 HTML 链接

javascript - Google Apps 脚本正则表达式匹配第 n 次出现

java - unicode字符的正则表达式问题

java - 在 UBUNTU 中从 VS Code 运行 Kotlin 会得到 kotlinc : not found

java - IntelliJ(访问被拒绝)

ruby-on-rails - 在 Ruby 中解析日期

java - 当应用程序在托盘中时,如何在 Dock 中隐藏 Java SWT 程序图标

python - 使用 Access ODBC 创建包含 DECIMAL 列的表