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
相关产品推荐
相关产品推荐

