Python字符串拆分异常:无法正确分离特殊字符求代码排查
排查Python字符串拆分代码中特殊字符提取错误的问题
咱们来一步步拆解你的代码问题,主要有两个核心错误导致特殊字符提取失败,还有一个会影响多测试用例的隐藏问题:
1. 特殊字符输出时用错了目标列表
你看代码最后输出特殊字符的部分:
for i in s: print(i,end='')
这里你遍历的是原输入字符串s,而不是专门用来存储特殊字符的st列表!这直接导致输出的是完整的原字符串,而非分离出来的特殊字符,这是最直观的错误。应该改成遍历st列表:
for i in st: print(i,end='')
2. 存储字符的列表未在每个测试用例前重置
你把a、n、st这三个列表定义在了测试用例循环的外面,这样处理多个测试用例时,上一个用例的字符会一直留在列表里,导致后续用例的结果和之前的内容累加在一起,输出完全混乱。比如第一个测试用例的字母会留在a里,第二个用例处理时会继续往a里新增字母,最终输出的是所有测试用例的字母总和,这显然不符合需求。
解决方法是把这三个列表的初始化放到每个测试用例的循环内部:
t=int(input()) for _ in range(t): a=[] n=[] st=[] s=list(input()) # 后续判断逻辑保持不变
优化后的完整代码
修复上述问题后,代码就能正常工作了,这里还做了两个小优化:直接遍历字符串无需转成list,用join方法输出比循环打印更高效简洁:
t = int(input()) for _ in range(t): a = [] n = [] st = [] s = input() for i in s: if i.isalpha(): a.append(i) elif i.isdigit(): n.append(i) else: # 非字母数字即为特殊字符,用else更简洁 st.append(i) print(''.join(a)) print(''.join(n)) print(''.join(st))
内容的提问来源于stack exchange,提问作者Panyam Tarun
相关产品推荐
相关产品推荐

