You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python获取重复字符索引:定位TestManager两侧方括号的索引方法

几种获取包裹TestManager的[]索引的Python方法

嘿,刚入门Python的话,这个需求其实很好实现,我给你分享几个实用的小方法,轻松搞定:

方法一:用字符串基础方法(简单直接)

这种方法适合确定目标文本TestManager只会出现一次的场景,利用字符串的find()方法定位目标,再推导括号的索引:

# 先定义你的示例字符串
log_str = "08:28:57,990 DEBUG [http-0.0.0.0-18080-33] [tester] [1522412937602-580613] [TestManager] ABCD: loaded 35 test accounts"

# 定位目标文本的起始位置
target = "TestManager"
target_start_pos = log_str.find(target)

# 推导左右括号的索引
left_bracket_idx = target_start_pos - 1  # 目标左边的[就在起始位置前一位
right_bracket_idx = target_start_pos + len(target)  # 目标右边的]在起始位置加目标长度的位置

# 打印结果
print(f"左括号[的索引:{left_bracket_idx}")
print(f"右括号]的索引:{right_bracket_idx}")

运行这段代码就能得到准确的索引啦,原理很直观:find()返回目标第一次出现的起始索引,那它紧邻的左右括号位置就能直接算出来。

方法二:用正则表达式(更灵活)

如果你的日志里可能出现多个TestManager,或者想更精准匹配[TestManager]这种格式,用正则表达式会更稳妥:

import re

log_str = "08:28:57,990 DEBUG [http-0.0.0.0-18080-33] [tester] [1522412937602-580613] [TestManager] ABCD: loaded 35 test accounts"

# 匹配[TestManager]这个整体,注意[]在正则里是特殊字符,要加转义符\
match_result = re.search(r'\[TestManager\]', log_str)

if match_result:
    left_idx = match_result.start()  # 匹配到的字符串的起始索引就是[的位置
    right_idx = match_result.end() - 1  # end()返回的是匹配结束的下一位,减1就是]的位置
    print(f"左括号[的索引:{left_idx}")
    print(f"右括号]的索引:{right_idx}")
else:
    print("没有找到匹配的[TestManager]")

要是想找出所有匹配的[TestManager]的括号索引,把re.search()换成re.finditer()就行,然后遍历结果逐个提取索引。

内容的提问来源于stack exchange,提问作者skhprabu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:30:45