【Python】 使用Apache Tika和Python实现zip、csv、xls等多格式文件文本内容提取


时间的电影 结局才知道
原来大人已没有童谣
最后的叮咛
最后的拥抱
我们红着眼笑
我们都要把自己照顾好
好到遗憾无法打扰
好好的生活
好好的变老
好好假装我 已经把你忘掉
                     🎵 五月天《好好》


在进行数据分析、搜索引擎优化或任何需要处理大量不同格式文件的任务时,文本内容提取和处理压缩包变得尤为重要。Apache Tika是一款强大的工具,它不仅可以提取各种文档和媒体文件的文本内容和元数据,还能处理压缩文件。虽然Tika是基于Java开发的,但是通过Tika的服务器模式和Python的Tika库,我们可以轻松地在Python项目中利用它的功能。

启动Apache Tika服务器

在使用Python进行文件内容提取之前,你需要启动Apache Tika服务器。这可以通过以下步骤完成:

下载Tika服务器jar文件:访问Apache Tika官网,下载最新版的tika-server-x.x.jar文件。

运行Tika服务器:确保安装了Java,然后在命令行或终端中运行以下命令来启动Tika服务器:

java -jar tika-server-x.x.jar

替换x.x为你下载的版本号。默认情况下,Tika服务器会监听9998端口。

docker安装方式

docker search apache/tika
docker run --name tika -d -p 0.0.0.0:9998:9998 apache/tika

安装Python Tika库

Python的Tika库封装了与Tika服务器交互的复杂性,使得在Python中使用Tika变得十分简单。通过以下命令安装:

pip install tika

提取文件内容

安装tika库并启动Tika服务器后,就可以编写Python代码来提取文件内容了。

示例:提取文档内容和元数据

from tika import parser
serverURL = 'http://127.0.0.1:9998'
filepath = 'path/to/your/test.txt'
parsed = parser.from_file(filepath,serverURL)
print("Text Content:\n", parsed["content"])
print("\nMetadata:", parsed["metadata"])

解压缩包并提取内容

除了提取单个文件的内容,Tika还能处理压缩文件,如ZIP或TAR包,使你能够访问包内的文件内容。以下示例演示如何处理压缩包:

from tika import unpack
archive_path = 'path/to/your/test.zip'
serverURL = 'http://127.0.0.1:9998'
parsed = unpack.from_file(archive_path,serverURL)
# 假设压缩包内包含文本文件,打印提取的内容
print("Archive Content:\n", parsed["content"])
{'content': '\n\n','metadata': {'X-TIKA:Parsed-By': ['org.apache.tika.parser.DefaultParser','org.apache.tika.parser.pkg.PackageParser'],'X-TIKA:Parsed-By-Full-Set': ['org.apache.tika.parser.DefaultParser','org.apache.tika.parser.pkg.PackageParser'],'resourceName': "b'test.zip'",'Content-Length': '304','Content-Type': 'application/zip'},'attachments': {'test1.txt': b'\xe5\x8e\x8b\xe7\xbc\xa9\xe5\x8c\x85\xe6\xb5\x8b\xe8\xaf\x95\n','test2.txt': b'\xe5\x8e\x8b\xe7\xbc\xa9\xe5\x8c\x85\xe6\xb5\x8b\xe8\xaf\x95\n'}}

在这个例子中,from_file方法会处理压缩包文件,自动解压并提取其中文件的内容。这对于需要批量处理多个压缩存档中的文档非常有用。

总结

Apache Tika是一个功能强大的内容分析工具,可以帮助开发者提取文档、图片以及压缩包中的文本内容和元数据。通过Python的Tika库,我们可以轻松将这些功能集成到Python应用中,无论是数据清洗、内容提取还是自动化文档处理任务,Tika都能大显身手。使用Tika处理压缩包特别方便,它自动管理文件解压和内容提取的复杂性,使得开发者可以专注于数据分析和处理逻辑。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/788520.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

路由器拨号失败解决方法

目录 一、遇到问题 二、测试 三、解决方法 (一)路由器先单插wan口设置 (二)mac地址替换 (三)更改路由器DNS 一、遇到问题 1 .在光猫使用桥接模式,由路由器进行拨号的时候,出现…

定时推送任务 Apache HttpClient/okhttp3

定时推送任务 需求 需要定时推送我方的数据到对方那边 方法1 Apache HttpClient 此方法指定推送过去的信息转为utf-8格式的json字符串 Scheduled(initialDelay 1000 * 120, fixedDelay 1000 * 60 * 5) public void diseaseInterface() {String lockKey "lock:dise…

【C语言】——指针七:数组和指针试题解析

【C语言】——指针七: 前言一、 s i z e o f sizeof sizeof 与 s t r l e n strlen strlen 的对比1.1、 s i z e o f sizeof sizeof1.2、 s t r l e n strlen strlen1.3、 s i z e o f sizeof sizeof 和 s t r l e n strlen strlen 对比 二、数组和指针笔试题解析…

SparkSQL 和 HiveSQL的区别

相同点 1. 都可以通过SQL分析数据.2. 都可以处理大规模的数据.3. 都是处理结构化的数据.4. 都是提交到Yarn平台来使用. 不同点 1. SparkSQL是基于内存的迭代计算, HiveSQL它是基于磁盘的迭代计算.2. HiveSQL仅仅能用SQL语言操作, SparkSQL除了能用SQL语句外, 还可以写DSL代码. …

算法打卡day32|贪心算法篇06|Leetcode 738.单调递增的数字、968.监控二叉树

算法题 Leetcode 738.单调递增的数字 题目链接:738.单调递增的数字 大佬视频讲解:单调递增的数字视频讲解 个人思路 这个题目就是从例子中找规律,例如 332,从后往前遍历,32不是单调递增将2变为9,3减1,变成了329&…

ES-7.12-官网阅读-ILM-index lifecycle actions

官方文档地址:Index lifecycle actions | Elasticsearch Guide [7.12] | Elastic 索引生命周期操作(index lifecycle actions) Allocate 将分片移动到具有不同性能特征的节点并减少副本数量 Delete 永久删除索引。 Force merge 减少索…

Marin说PCB之电源完整性之电源网络的PDN仿真CST---01

最近朋友圈最火的消息我感觉是除了开封的王婆外莫过于是小米SU7汽车发布这件事情了,小编我也是一位资深的米粉,我在上个月28号的时候守在电脑前直播看小米SU7汽车的发布会,其中雷总演讲的一段话很打动我:不甘于平庸,还…

微信小程序-文字转语音(播放及暂停)

1、使用微信小程序的同声传译功能 小程序平台-设置-第三方设置-插件管理-新增同声传译插件 小程序app.json文件配置 "plugins": {"WechatSI": {"version": "0.3.5","provider": "wx069ba97219f66d99"}},小程序中…

VMware-16.0配置虚拟机网络模式

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、为什么要配置网络?二、配置步骤1.检查VMware服务2.进入配置页面3.添加网络模式1.Bridge2.NAT3.Host-only 4.DHCP租约5.静态IP 三、使用总结 前言…

Java数据结构算法-动态规划算法

Java算法基础 算法是解决问题的一系列步骤或指令。在Java中,常见的算法包括排序算法(如冒泡排序、快速排序等)、查找算法(如顺序查找、二分查找等)以及递归和分治策略等。这些算法在实际编程中经常被使用,…

JS-23-原型继承

一、JS的原型继承 在传统的基于Class的语言如Java、C中,继承的本质是扩展一个已有的Class,并生成新的Subclass。 但是,JavaScript由于采用原型继承,根本不存在Class这种类型。 但是办法还是有的。我们先回顾Student构造函数&am…

ActiViz中的图像处理vtkImageActor

文章目录 前言一、vtkImageActor的基本特性1、支持的数据类型:2、 图像显示的位置和大小控制:3、 颜色和不透明度控制:4、图像剪裁和截取功能:二、vtkImageActor的使用方法1、创建vtkImageActor实例2、将图像数据设置给vtkImageActor3、 将vtkImageActor添加到渲染场景中4、…

手机真机连接USB调试adb不识别不显示和TCPIP连接问题

手机真机连接USB调试adb devices不显示设备和TCPIP连接 本文手机型号为NOVA 7 ,其他型号手机在开发人员模式打开等方式可能略有不同,需根据自己的手机型号修改。 文章目录 1. 打开和关闭开发者模式2. 真机USB连接调试adb不显示设备问题的若干解决方法3…

dm8修改sysdba用户的密码

1 查看达梦数据库版本 SQL> select * from v$version;LINEID BANNER ---------- --------------------------------- 1 DM Database Server 64 V8 2 DB Version: 0x7000c 3 03134283904-20220630-163817-200052 …

苦难调剂之路:网暴与贵人

这篇文章是抖音、b站、小红书上上传的同名视频的原文稿件,感兴趣的csdn用户可以关注我的抖音、b站、小红书账号(GeekPower极客力量)。同时这篇文章也为视频观众提供方便,可以更加冷静地分析和思考。文章同时在知乎发表。 最近各个…

数据分析之Logistic回归分析中的【多元有序逻辑回归】

1、定义 多元有序逻辑回归用于分析有序分类因变量与一个或多个自变量之间的关系。有序逻辑回归适用于因变量具有自然排序但没有固定间距的类别,例如疾病严重程度(轻度、中度、重度)或调查问卷中的满意度评分(非常不满意、不满意、…

前端调试工具之Chrome Elements、Network、Sources、TimeLine调试

常用的调试工具有Chrome浏览器的调试工具,火狐浏览器的Firebug插件调试工具,IE的开发人员工具等。它们的功能与使用方法大致相似。Chrome浏览器简洁快速,功能强大这里主要介绍Chrome浏览器的调试工具。 打开 Google Chrome 浏览器&#xff0c…

Linux(centos) 安装GraalVM

文章目录 版权声明GraalVM 版权声明 本博客的内容基于我个人学习黑马程序员课程的学习笔记整理而成。我特此声明,所有版权属于黑马程序员或相关权利人所有。本博客的目的仅为个人学习和交流之用,并非商业用途。我在整理学习笔记的过程中尽力确保准确性&…

视频汇聚/安防监控/EasyCVR平台播放器EasyPlayer更新:新增【性能面板】

视频汇聚/安防监控/视频存储平台EasyCVR基于云边端架构,可以在复杂的网络环境中快速、灵活部署,平台视频能力丰富,可以提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云台控制、平台级联、磁盘阵列存储、视频集中存储、云…

物联网行业中,我们如何选择数据库?

在当今数字化潮流中,我们面对的不仅是海量数据,更是时间的涟漪。从生产线的传感器到金融市场的交易记录,时间序列数据成为了理解事物演变和趋势的关键。在面对这样庞大而动态的数据流时,我们需要深入了解一种强大的工具——时序数…