如何基于双空白字符分割字符串并生成多个列表?
解决Python字符串按双换行分割为多列表的问题
你原来的代码存在几个关键问题,导致无法实现需求:
- 误用
*args可变参数,实际只需要接收单个字符串输入 - 每次循环都重置
new_list,之前收集的内容会被清空 - 完全没处理双换行的分割逻辑,只是简单判断
end存在就追加元素,根本没实现拆分功能
下面是能满足需求的实现代码:
def split_to_lists(text): # 按双换行分割成独立块 blocks = text.split('\n\n') result = [] for block in blocks: # 拆分每行、过滤空行并去除首尾空白 lines = [line.strip() for line in block.split('\n') if line.strip()] # 转成整数列表,非空则加入结果 if lines: num_list = [int(num_str) for num_str in lines] result.append(num_list) return result # 测试示例 my_text = '101\n102\n103\n\n111\n112\n113\n' output = split_to_lists(my_text) # 按要求格式输出 for lst in output: print(lst)
代码说明
text.split('\n\n'):将原字符串按双换行分割成两个核心块,得到['101\n102\n103', '111\n112\n113\n']- 列表推导式处理每行:拆分每个块为单行,过滤掉空行(比如末尾单独的换行符),同时去除字符串首尾空白
- 转换为整数列表:将每个有效行的字符串转成整数,组成子列表后加入最终结果
- 过滤空块:避免因字符串开头/结尾的双换行产生空列表
运行后会输出:
[101, 102, 103] [111, 112, 113]
内容的提问来源于stack exchange,提问作者Shane Heupel
相关产品推荐
相关产品推荐

