Python: 分块读取文本文件
在处理大文件时,逐行或分块读取文件是很常见的需求。下面是几种常见的方法,用于在 Python 中分块读取文本文件:

1、问题背景
如何分块读取一个较大的文本文件,并提取出特定的信息?
-
问题描述:
f=open('blank.txt','r') quotes=f.read() noquotes=quotes.replace('"','') f.close()rf=open('blank.txt','w') rf.write(noquotes) rf.close() f=open('blank.txt','r') finished = False postag=[] while not finished:line=f.readline()words=line.split()postag.append(words[4])postag.append(words[6])postag.append(words[8]) finished=True- 使用
open()函数打开文件,将文件内容读入变量quotes,然后用replace()函数去除所有双引号,再将处理后的内容写回文件。 - 再次打开文件,并使用
readline()函数逐行读取文件内容。 - 对于每一行,将其按空格分割成一个列表
words,并提取出列表中的第 5、7 和 9 个元素,将其添加到postag列表中。
- 使用
-
问题原因:
- 问题在于
while not finished:循环仅迭代了文件的第一行,因此无法处理整个文件。
- 问题在于
2、解决方案
-
使用
xml.etree.ElementTree模块解析 XML 文件:from xml.etree import ElementTreeline = '<word id="8" form="hibernis" lemma="hibernus1" postag="n-p---nb-" head="7" relation="ADV"/>'element = ElementTree.fromstring(line)form = element.attrib['form'] lemma = element.attrib['lemma'] postag = element.attrib['postag']print(form, lemma, postag)- 使用
ElementTree.fromstring()方法将 XML 字符串解析成一个元素对象。 - 使用
element.attrib获取元素的属性,并提取出form、lemma和postag属性的值。 - 打印出提取出的信息。
- 使用
-
使用正则表达式提取信息:
import redata = open('x').read() RE = re.compile('.*form="(.*)" lemma="(.*)" postag="(.*?)"', re.M) matches = RE.findall(data) for m in matches:print(m)- 使用
re.compile()方法编译正则表达式,并将其应用到文本数据中。 - 使用
findall()方法查找所有匹配正则表达式的子字符串,并将其存储在matches列表中。 - 遍历
matches列表,并打印出每个匹配子字符串。
- 使用
-
使用
SAX解析器解析 XML 文件:import xml.saxclass Handler(xml.sax.ContentHandler):def startElement(self, tag, attrs):if tag == 'word':print('form=', attrs['form'])print('lemma=', attrs['lemma'])print('postag=', attrs['postag'])ch = Handler() f = open('myfile') xml.sax.parse(f, ch)- 定义一个 SAX 解析器类
Handler,并重写startElement()方法,用于处理 XML 文件中的元素。 - 使用
xml.sax.parse()方法解析 XML 文件,并指定解析器对象ch。 - 每次遇到一个
word元素,就会调用startElement()方法,并打印出元素的form、lemma和postag属性的值。
- 定义一个 SAX 解析器类
-
使用
BeautifulSoup解析 XML 文件:from bs4 import BeautifulSoupsoup = BeautifulSoup(open('myfile').read(), 'xml')for word in soup.find_all('word'):print('form=', word['form'])print('lemma=', word['lemma'])print('postag=', word['postag'])- 使用
BeautifulSoup()方法解析 XML 文件,并将其存储在soup对象中。 - 使用
find_all()方法查找所有word元素,并将其存储在words列表中。 - 遍历
words列表,并打印出每个元素的form、lemma和postag属性的值。
- 使用
选择方法
- 如果需要逐行处理文件,选择方法1。
- 如果需要分块处理二进制文件或大文本文件,选择方法2。
- 如果需要按行块处理文件,选择方法3。
- 如果需要处理大规模的 CSV 文件,选择方法4。
每种方法都有其特定的应用场景,可以根据具体需求选择合适的方法。
相关文章:
Python: 分块读取文本文件
在处理大文件时,逐行或分块读取文件是很常见的需求。下面是几种常见的方法,用于在 Python 中分块读取文本文件: 1、问题背景 如何分块读取一个较大的文本文件,并提取出特定的信息? 问题描述: fopen(blank.txt,r) quot…...
服务攻防——中间件Jboss
文章目录 一、Jboss简介二、Jboss渗透2.1 JBoss 5.x/6.x 反序列化漏洞(CVE-2017-12149)2.2 JBoss JMXInvokerServlet 反序列化漏洞(CVE-2015-7501)2.3 JBossMQ JMS 反序列化漏洞(CVE-2017-7504)2.4 Adminis…...
宏碁F5-572G-59K3笔记本笔记本电脑拆机清灰教程(详解)
1. 前言 我的笔记本开机比较慢,没有固态,听说最近固态比较便宜,就想入手一个,于是拆笔记本看一下有没有可以安的装位置。(友情提示,在拆机之前记得洗手并擦干,以防静电损坏电源器件)…...
基于FPGA的LDPC编译码算法设计基础知识
基于FPGA的LDPC编译码算法设计基础知识 数字电路(数电)知识模拟电路(模电)知识1. 放大器1.1. 晶体管放大器1.2. 运算放大器1.3. 管子放大器(真空管放大器)微处理器/单片机知识其他相关知识 基于FPGA的算法设…...
国际网课平台Udemy上的亚马逊云科技AWS免费高分课程和创建、维护EC2动手实践
亚马逊云科技(AWS)是全球云行业最🔥火的云平台,在全球经济形势不好的大背景下,通过网课学习亚马逊云科技AWS基础备考亚马逊云科技AWS证书,对于找工作或者无背景转行做AWS帮助巨大。欢迎大家关注小李哥,及时了解世界最前…...
空中交通新动能!2024深圳eVTOL展动力电池展区核心内容抢先看!
空中交通新动能!2024深圳eVTOL展动力电池展区核心内容抢先看! 关键词:2024深圳eVTOL展 动力电池 高能量密度电池 高性能电池材料 作为2024深圳eVTOL展重要组成部分,2024深圳eVTOL动力电池展将于9月23-25日在深圳坪山燕子湖国际会…...
代码江湖:Python 中的进程与线程
大家好,我是阔升。今天,咱们来聊聊 Python 中的两个"老熟人"——进程和线程。这两个概念可以说是 Python 多任务编程中的"双子星",既相似又不同,让不少小伙伴们头疼不已。不过别担心,今天我们就来…...
根据H在有限域GF(2^m)上求解生成矩阵G
原理 有时间再补充。 注1:使用高斯消去法。如果Py不为单位阵,则说明进行了列置换,此时G不是系统形式。 注2:校验矩阵H必须是行满秩才存在对应的生成矩阵G,且生成矩阵G通常不唯一。 matlab实现:只做列置…...
Django 实现子模版继承父模板
背景 Django的占位符,如果不继承父模板的内容,会被子模版所覆盖,有些业务场景子模版也需要使用到父模板中的内容 可以使用Django自带的标签{% block super %}来实现此效果 base.html 最基础html,相当于第一层html,bl…...
数据安全治理:从库级权限申请到表级权限申请
背景 随着数据安全意识的提高,企业越来越重视数据治理和权限管理。传统数仓大多对库级别进行读写授权,仅对人工标记的敏感库进行表级别授权,但由于敏感等级是由人为标记,错误率较高,故期望将权限申请流程细化到表级申…...
vue3源码(六)渲染原理-runtime-core
1.依赖关系 runtime-dom 依赖于runtime-core,runtime-core 依赖于reactivity和sharedruntime-core提供跨平台的渲染方法createRenderer,用户可以自己传递节点渲染的渲染方法renderOptions,本身不关心用户使用什么APIruntime-dom提供了为浏览器而生的渲染…...
python拆分Excel数据,自动发邮箱
import pandas as pd import poplib import email from email.header import decode_header from email.parser import Parser df = pd.read_excel("年假明细表.xlsx") depts = df["部门"].unique() for dept in depts: department_df = df[df[&q…...
2024年福州延安中学夏季拿云杯拔尖创新人才素养测试(小高组)
1、选择题 那么,mn的值是( ) A、1243 B、1343 C、4029 D、4049 2、填空题 一副扑克牌共54张,其中1到13点各有 4张,每个数字黑色红色各两张,还有两张王牌,至少要取出( )…...
ES6 之 Promise 构造函数知识点总结 (四)
Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供了 Promise 对象。 Promise 对象有以下两个特点。 对象的状态不受…...
KIVY 3D Rotating Monkey Head¶
7 Python Kivy Projects (With Full Tutorials) – Pythonista Planet KIVY 3D Rotating Monkey Head kivy 3D 旋转猴子头How to display rotating monkey example in a given layout. Issue #6688 kivy/kivy GitHub 3d 模型下载链接 P99 - Download Free 3D model by …...
测试几个 ocr 对日语的识别情况
测试几个 ocr 对日语的识别情况 1. EasyOCR2. PaddleOCR3. Deepdoc(识别pdf中图片)4. Deepdoc(识别pdf中文字)5. Nvidia neva-22b6. Claude 3.5 sonnet 识别图片中的文字7. Claude 3.5 sonnet 识别 pdf 中表格8. OpenAI gpt-4o 识…...
华为机考前准备工作
很多同学在刷完真题后,就直接去考试了,会发现不是卡在了题目的难度上,而是卡在了代码数据的如何输入上。为了避免各位有志之士忽略小细节而导致的前功尽弃,博主特意总结了华为机考试题数据输入的几种情况及其源代码,仅…...
偏差、方差(训练误差,验证误差)
目录 一、偏差、方差:二、正则化参数λ对偏差、方差的影响:三、训练集规模对偏差、方差的影响:四、模型复杂度对偏差、方差的影响:五、方差、偏差如何帮助训练:1.高偏差解决方法:2.高方差解决方法ÿ…...
Retrofit框架源码深度剖析【Android热门框架分析第二弹】
Android热门框架解析,你确定不来看看吗? OkHttp框架源码深度剖析【Android热门框架分析第一弹】 Retrofit框架源码深度剖析【Android热门框架分析第二弹】 什么是Retrofit? 准确来说,Retrofit 是一个 RESTful 的 HTTP 网络请求…...
C++Windows环境搭建(CLion)
文章目录 CLion下载安装CLion下载CLion安装新建项目新建一个文件基础设置字体设置clion中单工程多main函数设置 参考 CLion下载安装 CLion下载 打开网址:https://www.jetbrains.com/clion/download/ 点击Download进行下载。 CLion安装 双击下载好的安装包&…...
保姆级教程:用snntorch在MNIST上训练你的第一个脉冲神经网络(附完整代码)
从零开始:用snntorch构建你的第一个脉冲神经网络手记 第一次接触脉冲神经网络(SNN)时,我被它模拟生物神经元放电的特性深深吸引。与传统人工神经网络不同,SNN通过离散的脉冲信号传递信息,更接近人脑的工作机…...
效率提升秘籍:用快马平台一键生成21届智能车优化算法模块
提升21届智能车开发效率的实战经验分享 最近在准备21届智能车比赛时,我发现传统开发方式存在不少效率瓶颈。从底层驱动到算法框架,每个环节都需要大量时间调试,而比赛周期又非常紧张。经过反复摸索,我总结出一套能显著提升开发效…...
企业内部是否需要技术团队做小程序
企业内部是否需要技术团队做小程序一、企业在推进小程序时的现实问题在实际业务中,越来越多企业开始考虑通过小程序拓展线上渠道,但在推进过程中,往往会遇到一个核心问题:企业内部是否需要组建技术团队来完成小程序开发。这一问题…...
3步解除音乐枷锁:QMCDecode全场景音频解密指南
3步解除音乐枷锁:QMCDecode全场景音频解密指南 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目录,默认转换结果…...
资源占用优化:OpenClaw在RTX4090D上并发控制策略
资源占用优化:OpenClaw在RTX4090D上并发控制策略 1. 为什么需要关注OpenClaw的资源占用? 去年冬天,当我第一次在RTX4090D上部署OpenClaw对接Qwen3-32B模型时,系统频繁崩溃的场景至今记忆犹新。原本以为24GB显存足以应对常规任务…...
3步实现跨次元游戏模组管理:XXMI启动器的多游戏统一解决方案
3步实现跨次元游戏模组管理:XXMI启动器的多游戏统一解决方案 【免费下载链接】XXMI-Launcher Modding platform for GI, HSR, WW and ZZZ 项目地址: https://gitcode.com/gh_mirrors/xx/XXMI-Launcher 还在为《原神》《崩坏:星穹铁道》等多款二次…...
TranslucentTB终极配置指南:轻松打造个性化Windows任务栏透明效果
TranslucentTB终极配置指南:轻松打造个性化Windows任务栏透明效果 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB Translucen…...
ISIS实验1
ISIS实验1网络拓扑配置一、AR1二、AR2三、测试1. 查看 IS-IS 邻居状态2. 查看 IS-IS 接口信息3. 查看 IS-IS 路由表4. 查看 IP 路由表中的 IS-IS 路由5. 查看链路状态数据库(LSDB)6. 检查:Level-1 区域一致性四、AR3五、AR4六、检测1. 通过链…...
探索粗糙表面波动模型生成:打造不规则之美
粗糙表面,波动模型生成,用于在物体表面生成不规则的粗糙表面,或面表面的波动边界等,可自定义波动分布与赋值。在图形学和模拟领域,生成物体表面的粗糙质感或是波动边界常常是一个有趣又具有挑战性的任务。今天咱们就聊…...
百度网盘提速全攻略:从限速对抗到效能优化的实战指南
百度网盘提速全攻略:从限速对抗到效能优化的实战指南 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 诊断限速瓶颈:从协议层破解速度封印 原理图解&am…...
