Python中利用正则表达式统计特定标记词后的单词数量

Python中利用正则表达式统计特定标记词后的单词数量

本教程旨在详细讲解如何在python中使用正则表达式精确统计文本字符串中,特定下划线标记词(例如`_earth`)后出现的单词数量。文章提供了两种核心解决方案:分别针对仅统计标记词之后的单词,以及将标记词本身也纳入统计的场景。通过深入解析正则表达式模式和提供完整的python代码示例,帮助开发者高效、灵活地处理此类文本分析任务。

在文本处理和数据分析中,经常需要从非结构化字符串中提取并统计特定模式后的信息。例如,在一个包含描述性文本的字符串中,我们可能需要找出某个特定标记词(如 _Earth)之后的所有单词并进行计数。本文将详细介绍如何利用Python的 re 模块和正则表达式来实现这一目标,并提供两种不同场景下的解决方案。

核心概念:正则表达式基础

正则表达式(Regular Expression, Regex)是一种强大的文本模式匹配工具。在本文中,我们将用到以下核心概念:

_: 匹配字面量下划线。w+: 匹配一个或多个单词字符(字母、数字、下划线)。s: 匹配一个空白字符(空格、制表符、换行符等)。+: 量词,表示匹配前一个元素一次或多次。(): 捕获组,用于捕获匹配到的子字符串。

方法一:仅统计下划线标记词之后的单词

此方法的目标是从字符串中提取并统计某个以下划线开头的词(例如 _Earth)之后的所有单词,但不包括该标记词本身。

正则表达式模式

_w+s([ws]+)

模式解析

_w+: 这部分匹配以下划线 _ 开头,后跟一个或多个单词字符的序列。这精确地定位了我们的“下划线标记词”(例如 _Earth)。s: 紧随其后,匹配一个空白字符。这确保了标记词与后续单词之间至少有一个分隔符。([ws]+): 这是一个捕获组。[ws]: 匹配一个单词字符或一个空白字符。+: 表示匹配前一个字符集一次或多次。因此,([ws]+) 捕获了标记词之后的所有单词字符和空白字符,直到字符串结束或不再符合模式为止。这正是我们希望统计的单词序列。

Python 实现示例

import retestString = '21 High Street _Earth Mighty Motor Mechanic'pattern = r'_w+s([ws]+)'match = re.search(pattern, testString)if match:    # match.group(1) 获取捕获组的内容,即“Mighty Motor Mechanic”    words_after_tag = match.group(1).split()    count = len(words_after_tag)    print(f"原始字符串: '{testString}'")    print(f"下划线标记词之后的单词数量(不含标记词本身): {count}")    print(f"提取到的单词列表: {words_after_tag}")else:    print("未找到下划线标记词或其后没有单词。")

代码说明

re.search(pattern, testString): 在 testString 中查找与 pattern 匹配的第一个位置。如果找到,返回一个匹配对象;否则返回 None。match.group(1): 当找到匹配时,match.group(1) 返回第一个捕获组(即 ([ws]+))所匹配到的内容。在这个例子中,它将返回 “Mighty Motor Mechanic”。.split(): 这是一个字符串方法,默认情况下会根据空白字符将字符串分割成一个单词列表。例如,”Mighty Motor Mechanic”.split() 将得到 [‘Mighty’, ‘Motor’, ‘Mechanic’]。len(words_after_tag): 计算列表中元素的数量,即单词的总数。

方法二:统计包含下划线标记词在内的所有后续单词

此方法的目标是提取并统计从下划线标记词(例如 _Earth)开始,到其后所有单词的总数。这意味着标记词本身也会被纳入计数。

立即学习“Python免费学习笔记(深入)”;

正则表达式模式

(_w+s[ws]+)

模式解析

(_w+s[ws]+): 整个模式被包裹在一个捕获组中。_w+: 匹配下划线标记词(例如 _Earth)。s: 匹配标记词后的一个空白字符。[ws]+: 匹配一个或多个单词字符或空白字符的序列,覆盖了标记词之后的所有单词。通过将整个序列放入一个捕获组,我们可以一次性捕获从标记词开始到字符串末尾的所有相关单词。

Python 实现示例

import retestString = '21 High Street _Earth Mighty Motor Mechanic'pattern = r'(_w+s[ws]+)'match = re.search(pattern, testString)if match:    # match.group(1) 获取捕获组的内容,即“_Earth Mighty Motor Mechanic”    words_including_tag = match.group(1).split()    count = len(words_including_tag)    print(f"原始字符串: '{testString}'")    print(f"包含下划线标记词在内的所有后续单词数量: {count}")    print(f"提取到的单词列表: {words_including_tag}")else:    print("未找到下划线标记词或其后没有单词。")

代码说明

与方法一类似,re.search() 用于查找匹配项。match.group(1) 此时将返回 “_Earth Mighty Motor Mechanic”,因为它包含了整个捕获组的内容。.split() 和 len() 的使用方式与方法一相同,但现在计数结果会包含下划线标记词本身。

选择与注意事项

根据需求选择: 两种方法的核心区别在于是否将下划线标记词纳入统计。开发者应根据具体的业务需求选择合适的正则表达式。如果需要分析标记词 之后 的内容,选择方法一;如果标记词本身也是分析对象的一部分,则选择方法二。re.search vs re.findall: 在本教程的场景中,我们通常只需要找到第一个下划线标记词及其后的单词,因此 re.search 是合适的选择,它返回第一个匹配对象。如果字符串中可能存在多个下划线标记词,并且需要对每个标记词后的单词进行独立统计,可能需要结合 re.finditer 或更复杂的循环逻辑。字符串末尾处理: 提供的正则表达式会匹配到字符串中最后一个单词。如果标记词后没有单词,match.group(1) 可能会是空字符串或不匹配,示例代码已包含 if match: 检查以避免错误。空白字符处理: split() 方法默认会处理一个或多个连续的空白字符,并移除结果中的空字符串,这通常符合单词计数的预期。

总结

通过本文,我们学习了如何利用Python的 re 模块和两种不同的正则表达式模式,灵活地统计文本中特定下划线标记词之后的单词数量。理解正则表达式的捕获组机制是解决此类问题的关键。选择正确的模式能够确保数据处理的准确性和效率,从而在各种文本分析任务中发挥重要作用。掌握这些技术将大大提升你在处理非结构化文本数据时的能力。

以上就是Python中利用正则表达式统计特定标记词后的单词数量的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1382448.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
python中如何使用RE正则表达检验字符串
上一篇 2025年12月14日 23:55:22
python中partial函数如何使用?
下一篇 2025年12月14日 23:55:36

相关推荐

  • 基于属性配置动态创建 Spring Boot Bean

    本文介绍了如何在 Spring Boot 应用中基于配置属性的值动态创建 Bean。通过使用 @ConditionalOnProperty 注解,可以根据指定的属性是否存在以及其值来决定是否创建某个 Bean,从而实现灵活的配置和 Bean 的动态加载。本文将提供详细的代码示例和使用说明,帮助开发者…

    2026年9月24日
    100
  • PCIe 4.0和PCIe 5.0的固态硬盘,实际使用差别大吗?

    PCIe 5.0 SSD相比4.0在游戏加载中提升有限,仅快1-2秒且感知不强;但在视频剪辑、AI训练等生产力场景下,顺序读写速度提升近一倍,渲染和文件传输效率显著提高。 PCIe 4.0和5.0固态硬盘在实际使用中的差别,主要看你怎么用。对大多数普通用户来说,差距没想象中大;但如果你干的是专业活儿…

    2026年9月24日
    200
  • Linux SSH配置文件sshd_config详解

    修改SSH配置可提升安全性与连接体验。1. Port 2222减少攻击;2. ListenAddress指定监听IP;3. Protocol 2禁用不安全的SSH-1;4. PermitRootLogin no禁止root直连;5. PasswordAuthentication no关闭密码登录;6…

    2026年9月24日
    000
  • Claude的AI混合工具如何使用?提升文本生成效率的完整方法

    Claude的AI混合工具通过组合多种AI模型优化文本生成,首先明确需求,如创意写作或代码生成,再选择适配模型如GPT-3、Codex等,设计多模型协作流程,结合LangChain等工具调用API,通过Prompt工程明确指令、风格与范围,并不断迭代优化,解决模型兼容性、数据格式与成本控制等技术挑战…

    2026年9月24日
    100
  • Laravel Blade中条件隐藏元素的优雅实践

    本文探讨了在Laravel Blade模板中如何高效地实现HTML元素的条件隐藏。针对传统@if-@else语句导致代码冗余的问题,教程提出使用Blade的内联三元运算符在style属性中动态控制display: none,从而避免重复代码,提升模板的可读性和维护性。此外,还将介绍如何利用CSS类和…

    2026年9月24日
    100
  • 小米Poco手机应用无法卸载怎么办?教你清理系统应用的步骤

    无法卸载小米Poco手机应用时,首先通过设置中的应用管理尝试卸载;若为系统应用,则可停用以隐藏并禁用;也可使用ADB命令通过电脑强制移除,无需Root;或获取Root权限后彻底删除,但存在风险。 如果您尝试卸载小米Poco手机上的某个应用,但发现无法通过常规方式移除,这通常是因为该应用属于系统预装或…

    2026年9月24日
    100
  • mysql中如何排查磁盘空间不足问题

    先检查磁盘使用情况,使用df -h和du -sh定位大文件;再通过SQL查询分析数据库和表的空间占用;接着检查binlog、慢查询日志及临时文件;最后采取删除无用数据、归档、压缩、分区等措施释放空间并优化配置。 当MySQL出现磁盘空间不足时,可能会导致写入失败、服务中断甚至实例崩溃。排查这类问题需…

    2026年9月23日
    100
  • 如何在Linux中处理只读文件系统?

    文件系统变只读主因是硬件故障或文件系统错误触发保护机制,需先用mount命令检查挂载状态,若显示ro则尝试remount,rw;2. 若失败应排查dmesg日志中的I/O错误,并在未挂载时用fsck修复文件系统;3. 使用smartctl检测磁盘健康,若硬盘已损坏需及时更换;4. 检查/etc/fs…

    2026年9月23日
    600
  • 如何在mysql中使用数值函数计算

    答案:MySQL数值函数用于执行数学运算,如ABS、ROUND、FLOOR、CEIL、MOD、POWER、SQRT等,可对数据直接计算。例如用ROUND四舍五入价格,TRUNCATE截断小数,FLOOR取整,MOD求余判断奇偶,SQRT开方,还可结合AVG、MAX等聚合函数使用,提升查询效率并减少应…

    2026年9月23日
    100
  • 如何在mysql中优化存储引擎参数

    优化MySQL存储引擎需根据业务场景调整参数。1. InnoDB:设innodb_buffer_pool_size为内存50%~70%,合理配置日志参数提升I/O性能,选用O_DIRECT减少缓存冲突,按磁盘性能设置io_capacity;2. MyISAM:分配足够key_buffer_size,…

    2026年9月23日
    100
  • VS Code自动化测试:持续集成与测试覆盖率

    VS Code通过插件和工具集成支持自动化测试、CI流程与覆盖率分析。①配置Jest或pytest等框架,结合Test Explorer UI插件实现测试运行与调试;②利用GitHub Actions等CI服务,在代码推送后自动执行测试,通过插件在编辑器内查看状态;③启用Coverage Gutte…

    2026年9月23日
    100
  • 如何检测Linux网络丢包率 ping统计信息分析技巧

    如何检测Linux网络丢包率 ping统计信息分析技巧如何检测Linux网络丢包率 ping统计信息分析技巧如何检测Linux网络丢包率 ping统计信息分析技巧如何检测Linux网络丢包率 ping统计信息分析技巧

    使用ping命令检测linux网络丢包率时,应先看“% packet loss”数值,再分析rtt和mdev变化;排查问题需按步骤进行:1. ping 127.0.0.1确认系统是否正常;2. ping网关检查局域网或路由器问题;3. ping外网ip判断isp或中间路由问题;结合mtr/trace…

    2026年9月23日 用户投稿
    800
  • 如何在Linux中配置SELinux进行安全控制?

    SELinux通过强制访问控制提升Linux安全性,需掌握主体、客体、安全上下文和策略等概念;使用ls -Z和ps -Z查看上下文,通过/etc/selinux/config设置enforcing、permissive或disabled模式,临时切换用setenforce命令;管理文件上下文时可用r…

    2026年9月23日
    200
  • 悟空浏览器如何使用全局媒体控制器_悟空浏览器多媒体播放控制中心使用技巧

    1、确保悟空浏览器通知权限开启,以激活系统媒体控制;2、检查网站是否配置Media Session API,必要时注入脚本补充元数据与控制函数;3、结合画中画与后台播放功能,维持媒体会话活跃,实现锁屏或切换应用时的持续控制。 如果您在使用悟空浏览器播放网页媒体时,希望利用系统级的媒体控制功能来管理播…

    2026年9月23日
    100
  • RapidMiner的AI混合工具如何操作?快速实现数据挖掘的实用方法

    RapidMiner通过可视化流程整合数据导入、清洗、特征工程、模型训练与部署,支持文本挖掘、时间序列分析及模型优化,可扩展自定义代码实现AI混合分析。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ RapidMiner的AI混合工具,简单…

    2026年9月23日
    500
  • 抖音发布的视频怎么删除?如何删除自己发布的作品

    随着短视频平台的快速发展,抖音已经成为人们日常生活中重要的娱乐和社交工具。在使用过程中,有时我们可能需要对已发布的视频进行删除处理。本文将为您详细介绍抖音视频的删除方式,帮助您轻松掌握操作技巧。 一、为何要删除抖音视频 1. 视频违规:如果发布的视频违反了平台规定,可能会导致账号受到限制或处罚,因此…

    2026年9月23日
    400
  • 如何预防单点故障?VIP高可用搭建解决步骤

    如何预防单点故障?VIP高可用搭建解决步骤如何预防单点故障?VIP高可用搭建解决步骤如何预防单点故障?VIP高可用搭建解决步骤如何预防单点故障?VIP高可用搭建解决步骤

    单点故障是系统稳定性最大威胁,因为其一旦发生将导致服务瞬间瘫痪。解决核心在于消除“唯一”组件,通过构建高可用集群实现冗余备份。具体步骤包括:1. 使用虚拟ip(vip)配合keepalived工具实现自动漂移;2. 配置至少两台服务器组成集群并通过心跳机制监测状态;3. 设置track_script…

    2026年9月23日 用户投稿
    500
  • 如何设置BIOS开机U盘启动模式

    一、制作U盘启动盘 首先,准备好一个容量充足的U盘(推荐8GB以上),并确保已下载所需的系统镜像文件。 下载并安装Rufus工具,这是一款操作简便、功能强大的U盘启动盘制作软件。 启动Rufus程序,在“设备”下拉菜单中选择你插入的U盘。 在“分区方案”选项中,若使用的是较新的计算机,建议选择“GP…

    2026年9月23日
    800
  • win8系统激活工具会导致蓝屏吗_Win8激活工具蓝屏风险说明

    win8系统激活工具会导致蓝屏吗_Win8激活工具蓝屏风险说明win8系统激活工具会导致蓝屏吗_Win8激活工具蓝屏风险说明win8系统激活工具会导致蓝屏吗_Win8激活工具蓝屏风险说明win8系统激活工具会导致蓝屏吗_Win8激活工具蓝屏风险说明

    蓝屏由第三方激活工具修改系统文件或驱动导致,应立即停止使用此类工具。首先进入安全模式阻止恶意模块启动,通过设备管理器卸载可疑驱动,再运行sfc /scannow和DISM命令修复系统文件,并禁用快速启动功能以排除兼容性问题,逐步恢复系统稳定性。 如果您在使用第三方激活工具对Windows 8系统进行…

    2026年9月23日 用户投稿
    700
  • 为什么硬盘数据恢复不完整?如何提高数据完整性?

    硬盘数据恢复不完整主要因数据覆盖、物理损伤、文件系统损坏、加密问题及恢复软件局限所致;一旦发生数据丢失且伴随异响、无法识别等情况,应立即停止操作并寻求专业服务,因其具备无尘环境、专用设备与技术经验,可最大限度避免二次损伤并提升恢复成功率。 硬盘数据恢复不完整,这事儿说起来挺让人沮丧的,往往是数据在丢…

    2026年9月23日
    700

发表回复

登录后才能评论
关注微信