You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 14:42:45