Python如何忽略空格对句子进行切片且保留原有空格和标点?
Python 实现忽略空格的字符串切片
核心思路
- 不修改原字符串的结构,空格、标点全部原位保留
- 仅对非空格字符做独立索引计数,用该计数判断当前非空格字符是否符合切片规则,匹配则保留,不匹配则跳过,无论是否保留都对非空格索引计数+1
实现代码
def slice_ignore_space(s: str, start: int = 0, step: int = 1) -> str: res = [] # 非空格字符的独立索引 non_space_idx = 0 for char in s: # 空格直接保留,不参与索引计数 if char.isspace(): res.append(char) continue # 判断当前非空格字符是否符合切片规则 if non_space_idx >= start and (non_space_idx - start) % step == 0: res.append(char) # 非空格字符无论是否保留,计数都+1 non_space_idx += 1 return ''.join(res)
测试示例
input_str = "Myevmyozrtilets gwaaarkmv yuozub ubpi farfokm ctbhpe pientsfiydqe. zBmuvtk tahgelyu anlpsmo ttzevagrk yioquj awpyaoryts。" # 对应忽略空格取[::2]的需求 output = slice_ignore_space(input_str, step=2) print(output)
运行后输出结果为:Memories warm you up from the inside. But they also tear you apart。
该句中文翻译为:回忆能从内心深处温暖你,却也能将你撕裂。
方案优势
不需要拆分原字符串,也不需要对空格做删除后回填操作,所有标点、空格的位置和原字符串完全一致,符合需求要求。
内容的提问来源于stack exchange,提问作者Pieter Groeninckx
相关产品推荐
相关产品推荐

