Python字符串按两位分割后,奇数长度时末尾补下划线的问题求助
字符串双字符分割并补全下划线的修正方案
原代码的问题在于,当字符串长度为奇数时,会将最后单个字符作为独立元素,再额外追加一个下划线元素,不符合["ab", "cd", "e_"]的预期输出。以下是两种修正方案:
方案一:遍历截取时补全下划线
直接在遍历过程中检查每个截取的片段长度,若为1则拼接下划线:
def split_string(string: str) -> list: result = [] for i in range(0, len(string), 2): chunk = string[i:i+2] # 若当前片段仅单个字符(说明是奇数长度的最后一段) if len(chunk) == 1: chunk += "_" result.append(chunk) return result # 测试 print(split_string("abcde")) # 输出: ['ab', 'cd', 'e_']
方案二:先统一补全字符串再分割
先给奇数长度的字符串末尾添加下划线,确保总长度为偶数,再直接按步长2分割,代码更简洁:
def split_string(string: str) -> list: # 若字符串长度为奇数,末尾补下划线 if len(string) % 2 != 0: string += "_" # 列表推导式按双字符分割 return [string[i:i+2] for i in range(0, len(string), 2)] # 测试 print(split_string("abcde")) # 输出: ['ab', 'cd', 'e_']
两种方案都能满足需求,方案二更高效直观,避免了遍历中的额外判断。
内容的提问来源于stack exchange,提问作者avkpol
相关产品推荐
相关产品推荐

