Python实现字符串逐词反转并完整保留原始空格数量
逐词反转实现的空格保留问题
现状说明
已经掌握字符串逐词反转的实现逻辑,目前已摸索出两种不同的逐词反转实现方案,但当前遇到的核心问题是:在反转单词的同时如何完整保留字符串原有的空格数量。
例如处理输入字符串'Hello World'(两个连续空格)时,当前实现的输出仅保留1个空格,无法匹配原字符串的空格规格。
存在缺陷的现有代码
def backward_string_by_word(text: str) -> str: list2 = [] res = [i for j in text.split() for i in (j, ' ')][:-1] for word in res: list2.append(word[::-1]) return ''.join(list2) def backward_string_by_word2(text: str) -> str: # TODO: 实现保留原始空格的处理逻辑 return ' '.join(x[::-1] for x in text.split()) print(backward_string_by_word("Hello World")) # 当前代码仅输出单个空格,不符合保留双连续空格的预期 print(backward_string_by_word2("Hello World"))
缺陷来源
- 两套实现都使用无参数的
str.split()方法拆分文本,该方法默认会将任意连续的空白字符(包括多空格、制表符、换行等)识别为统一分隔符,拆分完成后就彻底丢失了原始文本中空格的数量、位置信息。 - 第一套实现拆分后手动为每个单词补单个空格,第二套实现拆分后直接用单个空格拼接反转后的单词,从逻辑层面就没有设计保留原始连续空格的处理流程。
内容的提问来源于stack exchange,提问作者MitchellDirt
相关产品推荐
相关产品推荐

