在给定的字符串中分割数字,字符串,特殊字符

时间:2020-07-19 12:01:49

标签: python string special-characters

给出一个由字母,数字和特殊字符组成的字符串S。您需要编写一个程序将字符串分成三个不同的字符串S1,S2和S3,这样字符串S1将包含S中存在的所有字母,字符串S2将包含S中存在的所有数字,S3将包含所有特殊字符S中存在字符。字符串S1,S2和S3的字符顺序应与输入中出现的顺序相同。

输入: 输入的第一行包含一个整数T,它表示测试用例的数量。每个测试用例的第一行包含字母,数字和特殊字符的字符串S。 输出: 对于每个测试用例,第一行打印包含所有S字母的字符串S1。第二行打印包含所有数字的字符串S2。在第三行中,打印字符串S3,其中包含S中存在的所有特殊字符。

约束: 1 <= T <= 100 3 <=长度(S)<= 1000

示例: 输入: 2 geeks01for02geeks03 !!! **每天编码123456789 ## 输出: 极客 010203 !!! 每天编码 123456789 ** ## 我的代码:

enter code here
t=int(input())
a=[]
n=[]
st=[]
for _ in range(t):
    s=list(input())
    for i in s:
        if i.isalpha():
            a.append(i)
        
        elif i.isdigit():
            n.append(i)
        
        elif not i.isalnum():
            st.append(i)
    for i in a:
        print(i,end='')
    print('')    
    for i in n:
        print(i,end='')
    print('')    
    for i in s:
        print(i,end='')
    print('')   

我的代码将字母,数字而非特殊字符分开,任何人都可以告诉我python代码有什么问题

2 个答案:

答案 0 :(得分:0)

def splitString(str): 


    alpha = "" 
    num = "" 
    special = "" 
    for i in range(len(str)): 
        if (str[i].isdigit()): 
            num = num+ str[i] 
        elif((str[i] >= 'A' and str[i] <= 'Z') or
            (str[i] >= 'a' and str[i] <= 'z')): 
            alpha += str[i] 
        else: 
            special += str[i] 

    print(alpha) 
    print(num ) 
    print(special) 

t=int(input())
for i in range(t):
    s = input()
    splitString(s)

答案 1 :(得分:0)

在最后一个用于打印特殊字符的for循环中,您将其循环到错误的列表上。更改为

for i in st:
   print(i)