新闻中心

python:在字符串中查找指定字符的多个索引方法

2025-11-27
浏览次数:
返回列表
答案是使用列表推导式、while循环结合str.find或re.finditer可查找字符所有位置:1. 列表推导式遍历enumerate获取索引;2. while循环用find持续查找并更新起始位置;3. re.finditer配合正则提取匹配位置,注意特殊字符需转义;4. 可封装为函数复用。

python:在字符串中查找指定字符的多个索引方法

在 Python 中,如果想在一个字符串中查找某个字符的所有出现位置(即多个索引),有几种简单有效的方法可以实现。下面介绍几种常用方式。

使用列表推导式和 enumerate

这是最常见也最高效的方式之一。通过 enumerate 遍历字符串的同时获取索引和字符,再用条件判断筛选出目标字符的索引。

text = "hello world"
char = "l"
indices = [i for i, c in enumerate(text) if c == char]
print(indices)  # 输出: [2, 3, 9]

使用 while 和 str.find 方法

str.find() 可以从指定位置开始查找字符第一次出现的位置,找不到时返回 -1。利用循环不断更新起始位置,可以找出所有匹配索引。

text = "hello world"
char = "l"
indices = []
start = 0
while True:
    index = text.find(char, start)
    if index == -1:
        break
    indices.append(index)
    start = index + 1
print(indices)  # 输出: [2, 3, 9]

使用 re.finditer 配合正则表达式

如果你习惯使用正则表达式,re.finditer 能返回所有匹配项的迭代器,每个匹配对象包含其位置信息。

N世界 N世界

一分钟搭建会展元宇宙

N世界 138 查看详情 N世界
import re
<p>text = "hello world"
char = "l"
indices = [match.start() for match in re.finditer(char, text)]
print(indices)  # 输出: [2, 3, 9]
</font></p>

注意:若字符是特殊正则符号(如 . * + ? 等),需要先用 re.escape(char) 转义。

封装成通用函数

可以把上述任意一种方法封装为可复用的函数,方便多次调用。

def find_all_indices(text, char):
    return [i for i, c in enumerate(text) if c == char]
<h1>使用示例</h1><p>result = find_all_indices("banana", "a")
print(result)  # 输出: [1, 3, 5]</p>

基本上就这些常用方法。根据具体场景选择即可:列表推导简洁明了,find 循环控制灵活,正则适合复杂模式匹配。不复杂但容易忽略细节,比如边界处理和特殊字符转义。基本上就这些。

以上就是python:在字符串中查找指定字符的多个索引方法的详细内容,更多请关注其它相关文章!


# 这是  # 长沙淘宝营销推广招聘网  # 优化网站怎么收录的视频  # 仙桃茶叶网站推广方案  # 列车网站建设素材图  # 石家庄无极网站推广哪家好  # 耒阳包年网站推广  # 如皋市网站建设方案  # 常州网站优化推广方案  # 网店口碑推广营销  # 济宁正规主词seo优化企业  # python  # 复用  # 源代码  # 如何将  # 数据包  # 转换为  # 几种  # 遍历  # 多个  # app  # 正则表达式 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: Composer中的^和~符号代表什么_精通Composer版本号语义化约束  c++ 获取系统当前时间 c++时间戳获取方法  58动漫网在线官方网 58动漫网正版动漫入口网址  《明末:渊虚之羽》设计师谈设计角色:那会刚毕业 充满激情  美团外卖商家服务中心入口 美团商家版官网入口  《马克思佩恩3》早期版本曝光 UI设计曾多次调整!  win11开机启动修复循环怎么办 Win11无法进入系统高级启动解决方法【修复】  C++的std::forward_list怎么用_C++ STL中单向链表容器的特点与应用  在J*a项目里如何构建对象之间的契约_接口约束的实际落地  1688商家版怎样分析买家画像精准供货_1688商家版分析买家画像精准供货【供货策略】  4399免费游戏网址入口 4399小游戏免费入口点开即玩  win11 Snap Layouts怎么用 Win11窗口布局与分屏多任务高效指南【必学】  2025年云电脑操作系统体验 | 无需本地硬件,随时随地使用高性能PC  邮政快递包裹最新位置 邮政快递实时追踪入口  在Qt QML中通过Python字典动态更新TextEdit内容的教程  Promise错误处理:在catch后终止链式then执行的策略  在VS Code中配置和运行Dart程序的完整步骤  Lar*el头像管理:图片缩放与旧文件删除的最佳实践  Golang如何通过reflect操作map_Golang reflect map操作与遍历技巧  PyTorch模型训练效果不佳?深入剖析常见错误与调试技巧  Win10如何开启蓝牙功能_Windows10找不到蓝牙开关解决方法  Yandex浏览器官方网页版入口 Yandex浏览器最新版官网  yy漫画网页版官方入口_yy漫画官网登录页面链接  在J*a中如何使用Exception包装底层异常_异常包装与信息传递方法说明  163邮箱官方主页登录 直达网易邮箱登录核心页面  如何仅使用CSS更改登录界面背景图像图标的颜色  如何将HTML表格多行数据保存到Google Sheets  优化 Python 函数中的条件逻辑:解决 if-else 嵌套与参数选择问题  vivo手机互传视频怎么操作_vivo手机互传视频详细传输方法  Bilibili动漫最新防封地址发布-Bilibili动漫2025年最稳正版入口推荐  谷歌邮箱注册显示错误Gmail服务器异常与延迟处理  京东单号查询入口_京东快递订单追踪入口  Python自定义类排序:解决lambda键值访问TypeError的实践指南  淘宝支付提示失败如何解决 淘宝支付流程优化方法  Angular中单选按钮的正确使用与常见陷阱解析  微信客户端如何收红包_微信客户端接收红包使用教程  Steam官网入口直达 Steam注册及登录步骤  Win10如何清理注册表垃圾 Win10手动清理无效注册表【技巧】  漫蛙2在线漫画入口 漫蛙正版漫画网页版直达  AO3官网镜像链接 Archive of Our Own同人文在线浏览  Log4j Console Appender性能瓶颈与高并发优化策略  打开就能玩的植物大战僵尸 植物大战僵尸网页版传送门  夸克浏览器网页版最新地址 夸克浏览器官方入口合集  天眼查企业查询官网入口 天眼查官方网页版查询  Win11怎么开启卓越性能模式 Win11电源选项启用高性能释放硬件潜力【方法】  MAC如何将整个网页截长图_MAC使用Safari的导出为PDF或第三方工具  蛙漫安全无毒 官方认证的绿色入口  Lar*el递归关系中排除子孙节点的策略  邮政快递单号查询入口 邮政快递物流信息在线查询入口  css链接悬停下划线样式如何自定义_使用::after结合content和transition 

搜索