讨论中很多答主的isalpha函数我没听说过,不知道具体作用
- 平常re模块用的多,所以就用正则去匹配了
- 用同一个循环处理index和value,把非字母的index和value存储到map中去
- 基于str.upper忽略大小写走排序
- 然后遍历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