讨论中很多答主的isalpha函数我没听说过,不知道具体作用

  1. 平常re模块用的多,所以就用正则去匹配了
  2. 用同一个循环处理index和value,把非字母的index和value存储到map中去
  3. 基于str.upper忽略大小写走排序
  4. 然后遍历map将对应的值按照index插入进去。最后打印
import re
pattern = re.compile('[A-Za-z]{1}')
while True:
    try:
        line = input()
        other_map = {}
        letter_str = ''
        for index, case in zip(range(len(line)),line):
            if pattern.search(case):
                letter_str += case
            else:
                other_map[index] = case
        letter_str = sorted(letter_str, key=str.upper)
        for k,v in other_map.items():
            letter_str.insert(k, v)
        print(''.join(letter_str))
    except EOFError: 
        break