当前位置: 首页 > news >正文

13.多行文本读取、遍历

# -*- coding: utf-8 -*-""" @Created on : 2026/4/28 9:50 @creator : er_nao @File :Day_13.py @Description :多行文本读取、遍历 """""" 核心知识点 1:多行文本读取的 4 种核心方法 """""" 方法1:readlines () 一次性全量读取(最常用,NLP 场景首选) 适用场景: 读取中小体积的 txt 文件(比如对话历史、短文档、评论数据),文件大小在几百 MB 以内 你需要对所有行做批量处理、二次筛选、统计分析,90% 的 NLP 场景都用这个方法 """withopen('C:\\Users\\hp\\Desktop\\words_list.txt','r',encoding='utf-8')asfile:# 全量读取所有行all_lines=file.readlines()# 基础处理:过滤掉空行,去除每行的换行符valid_lines=[]forlineinall_lines:clean_line=line.strip()# 过滤掉空行ifclean_line!='':valid_lines.append(clean_line)print(f'【读取结果】:总共有{len(all_lines)}行,有效行{len(valid_lines)}行')print('【有效对话内容】:')fori,lineinenumerate(valid_lines):print(f'第{i+1}行:{line}')""" 方法 2:逐行遍历读取(for line in file,大文件首选) 适用场景: 读取超大体积的 txt 文件(比如几个 GB 的语料库、日志文件),一次性读取会占满内存,逐行读取更省内存 你只需要处理符合条件的行,不需要读取整个文件,比如提取包含指定关键词的行 """target_lines=[]# 打开文件,逐行遍历withopen('C:\\Users\\hp\\Desktop\\words_list.txt','r',encoding='utf-8')asfile:# 逐行遍历,每循环一次,就读取一行forlineinfile:clean_line=line.strip()if'NLP'inclean_line:target_lines.append(clean_line)# 打印结果print(f'【提取结果】:共找到{len(target_lines)}条包含NLP的内容')forlineintarget_lines:print(f'{line}')""" 方法 3:read () + splitlines () 读取后拆分多行(最灵活) 适用场景: 你需要先对整个文本做统一的预处理(比如全量清洗、去除特殊符号),然后再拆分成多行 文本里的换行符格式不统一(有\n、\r\n),splitlines()会自动统一处理 """withopen('C:\\Users\\hp\\Desktop\\words_list.txt','r',encoding='utf-8')asfile:full_text=file.read()importre clean_full_text=re.sub(r'[^\u4e00-\u9fa5a-zA-Z0-9\s,。!?;:]','',full_text)clean_full_text=re.sub(r'\s+',' ',clean_full_text).strip()# 按换行符拆分成多行列表lines_list=clean_full_text.splitlines()# 过滤空行valid_lines=[line.strip()forlineinlines_listifline.strip()!='']# 打印清洗后的结果forlineinvalid_lines:print(f'{line}')""" 方法 4:按指定分隔符读取多行 适用场景: 读取结构化的文档、论文、产品手册,按空行拆分段落 读取对话历史,按特殊标记(比如用户:、AI:)拆分对话轮次 """withopen('C:\\Users\\hp\\Desktop\\nlp_result.txt','r',encoding='utf-8')asfile:full_text_4=file.read()# 按2个连续的换行符(空行)拆分,得到多个段落paragraph=full_text_4.split('\n\n')# 过滤空段落,清洗每个段落valid_paragraph=[]forparinparagraph:clean_par=par.strip().replace('\n',' ')ifclean_par!='':valid_paragraph.append(clean_par)print(f'【文档读取结果】:一共拆分{len(valid_paragraph)}个段落')fori,parainenumerate(valid_paragraph):print(f"\n第{i+1}段:{para[:3]}..."iflen(para)>3elsef"\n第{i+1}段:{para}")""" 核心知识点 2:多行文本的遍历与处理 """""" 方式 1:基础遍历 + 逐行清洗(最常用) """defclean_line_text(line):"""逐行清洗文本"""clean_line=line.strip()# 去除特殊符号、乱码clean_line=re.sub(r'[^\u4e00-\u9fa5a-zA-Z0-9\s,。!?;:]','',clean_line)# 统一多个空格为1个clean_line=re.sub(r'\s+',' ',clean_line)# 返回清洗后的行returnclean_line# 读取多行文本withopen('C:\\Users\\hp\\Desktop\\test.txt','r',encoding='utf-8')asfile:all_lines=file.readlines()# 遍历所有行,逐行清洗clean_lines=[]forlineinall_lines:clean_line=clean_line_text(line)# 过滤空行ifclean_line!='':clean_lines.append(clean_line)# 打印结果print('【逐行清洗后的结果】')forlineinclean_lines:print(line)""" 方式 2:批量遍历 + 统一 NLP 处理 """importjieba STOP_WORDS=["的","是","在","和","有","也","就","都","而","及","与","着",",","。","!","?",";",":","、"," "]# 读取并清洗多行文本withopen('C:\\Users\\hp\\Desktop\\test.txt','r',encoding='utf-8')asfile:all_lines=file.readlines()# 清洗所有行clean_lines=[line.strip()forlineinall_linesifline.strip()!='']# 遍历所有行,逐行分词、过滤停用词all_words=[]forlineinclean_lines:#分词words=jieba.lcut(line)# 过滤停用词valid_words=[wordforwordinwordsifwordnotinSTOP_WORDSandword.strip()!='']all_words.extend(valid_words)# 统计高频词word_count={}forwordinall_words:ifwordinword_count:word_count[word]=word_count[word]+1else:word_count[word]=1# 按照出现次数倒序排序sorted_word_count=sorted(word_count.items(),key=lambdax:x[1],reverse=True)print(f'【所有行的分词结果】:{all_words}')print('【高频词出现次数】:')forword,countinsorted_word_count[:10]:print(f'{word},出现{count}次')

http://www.jsqmd.com/news/716200/

相关文章:

  • 别再让MOSFET发热了!手把手教你用预驱IC提升开关效率(附仿真对比)
  • 看不起日本车,看不上韩国车,但从未超越的国产品牌已开始暴跌
  • 别再只用Swagger UI了!试试Knife4j:给你的Spring Boot 3 API文档加个“增强Buff”
  • pikachu自编CSRF(GET),CSRF(POST),CSRF(token)
  • 5分钟掌握Audio Slicer:免费高效的音频智能分割终极指南
  • 从微信语音到VoNR:深入聊聊5G时代‘打电话’背后的QoS优先级战争
  • 3分钟掌握Win11Debloat:一键优化Windows系统的终极指南
  • 自媒体灵感来了记不住?我用这个方法攒了500个选题
  • 合规+高效+省心:彼岸空间核心业务结构解析 - 资讯焦点
  • 终极B站字幕下载方案:告别手动转录,3分钟获取任何视频字幕
  • 从硅谷鞋神到算力新贵,Allbirds转型AI是咸鱼翻身还是泡沫经济?
  • 2026年中效过滤器品牌厂家推荐:中效袋式过滤器/中效板式过滤器/无隔板中效过滤器/组合式中效过滤器/中效玻纤袋式过滤器,环保净化与通风过滤优质品牌解析 - 速递信息
  • R语言做元分析,别再手动算权重了!用meta包5分钟搞定森林图和异质性检验
  • 2026学生党小提琴选购实测:宿舍/新手/考级全场景选购指南~
  • Translumo:终极免费实时屏幕翻译神器,打破语言障碍的完整解决方案
  • 智能制造系统推广的核心的十个关键问题
  • 毕业生降AI怎么省钱?综合性价比高的5款主流工具实测推荐! - 我要发一区
  • 香港启世集团开放能源产能配额预约! - 速递信息
  • 高速DSP处理器芯片测试:BGA475/BGA621测试座的精准对位
  • 【变压器】中压直流变压器松磁耦合结构分析Matlab实现
  • Win11Debloat:Windows 11终极优化工具,5步彻底清理系统冗余组件
  • 别再让DC/PT乱报时序了!手把手教你用set_case_analysis搞定时钟选择器与扫描链
  • 手机变Linux服务器:用Termux在Android上搭建个人开发环境(保姆级配置流程)
  • 从概念到规模化:2026年AI在工业自动化中的四大核心战场
  • 3步掌握DownKyi:B站视频批量下载与8K画质处理终极指南
  • 深度解析OfflineInsiderEnroll:Windows Insider离线通道管理的注册表技术方案
  • 不达标退款的降AI工具盘点:5款承诺过AIGC检测的高性价比之选! - 我要发一区
  • 2026年北京GEO优化公司实力横评|AI流量营销落地实战选型全指南 - GEO优化
  • 多Agent系统设计与协作机制:从“单打独斗“到“团队协作“
  • Python国产化迁移实战手册(含ODBC/JDBC/SQLAlchemy三层适配对照表)