如何循环处理前缀列表提取文本中Mr、Miss、Mrs后的内容
循环提取前缀后文本的解决方案
我懂你现在的需求:不想手动逐个调用find(),而是通过循环遍历前缀列表ls = ['Mr', 'Miss', 'Mrs'],自动提取每个前缀对应的完整内容。
你的原始目标文本是:
jkjkjkMr James Jon lrtrtrMiss Krin Poo erere\Mrs Lolo Freh
核心思路
其实逻辑很清晰:先找到每个前缀在文本中的起始位置,然后确定该段内容的结束边界——如果后面还有其他前缀,就以上一个前缀的起始位置为终点;如果是最后一个前缀,就取到文本末尾。这样就能精准截取每个前缀对应的内容,不用手动逐个处理。
Python代码实现
这里给你写个可直接运行的示例:
text = "jkjkjkMr James Jon lrtrtrMiss Krin Poo erere\\Mrs Lolo Freh" prefix_list = ['Mr', 'Miss', 'Mrs'] # 第一步:收集所有存在的前缀及其起始索引 prefix_info = [] for prefix in prefix_list: start_idx = text.find(prefix) if start_idx != -1: # 跳过不存在于文本中的前缀 prefix_info.append( (start_idx, prefix) ) # 按前缀在文本中出现的先后顺序排序(避免列表顺序和文本中顺序不一致) prefix_info.sort() # 第二步:循环提取每个前缀对应的内容 extracted_results = [] for idx in range(len(prefix_info)): current_start, current_prefix = prefix_info[idx] # 确定结束索引 if idx < len(prefix_info) - 1: current_end = prefix_info[idx+1][0] else: current_end = len(text) # 截取并清理内容(去除前后多余空白) content = text[current_start:current_end].strip() extracted_results.append(content) # 输出结果 for item in extracted_results: print(item)
运行结果
执行这段代码后,会得到你想要的结果:
Mr James Jon Miss Krin Poo Mrs Lolo Freh
额外优化说明
- 加入排序步骤是为了兼容文本中前缀出现顺序和你的列表顺序不一致的情况,保证提取结果是按文本中的先后排列的。
strip()方法用来去除内容前后的多余空格或杂字符,让结果更整洁。- 加入了
start_idx != -1的判断,防止某个前缀不在文本中时出现错误。
内容的提问来源于stack exchange,提问作者Bella
相关产品推荐
相关产品推荐

