移除字符串非字母数字字符编辑后,如何将非字符还原至原位置?
字符串处理(保留原非字母数字位置)实现方案
核心逻辑
用正则将原字符串分割为「纯字母数字片段」和「纯非字母数字片段」交替的列表,仅对字母数字片段执行自定义编辑操作,非字母数字片段原样保留,最后拼接所有片段即可还原位置。
完整代码
import re def process_string(raw_str, edit_func): # 分割为字母数字片段和非字母数字片段交替的列表 fragments = re.findall(r'([a-zA-Z0-9]+|[^a-zA-Z0-9]+)', raw_str) result = [] for frag in fragments: # 字母数字片段执行自定义编辑,非字母数字直接保留 if frag and frag[0].isalnum(): result.append(edit_func(frag)) else: result.append(frag) return ''.join(result) # 示例用法 if __name__ == '__main__': input_str = "heompuem ykojua'rje awzeklvl." # 自定义编辑函数:步长2截取 def sample_edit(s): return s[::2] output = process_string(input_str, sample_edit) print(output)
效果验证
输入:heompuem ykojua'rje awzeklvl.
输出:hope you're well.
内容的提问来源于stack exchange,提问作者Arno Huyghe
相关产品推荐
相关产品推荐

