如何在字符串中对整数排序

时间:2018-08-30 22:01:52

标签: python string python-3.x

此函数采用一个字符串参数。假设字符串将是一系列由空格分隔的整数。忽略任何多余的空格。空字符串或空格字符串将返回空字符串。否则,该函数将返回带有参数整数的字符串 用空格分隔,但现在按排序顺序。不要检查无效的字符串。例如,如果参数为43 -1 17,则函数返回-1 17 43。`

在输入为\t42 4 -17 \n的情况下不起作用

def sort_int_string(string):
        strlist = string.split(' ')
        new = []
        for value in strlist:
            value2 = int(value)
            new.append(value2)
        new = sorted(new)
        strlist2 = []
        for number in new:
            number = str(number)
            strlist2.append(number)
        final = ' '.join(strlist2)
        return final

3 个答案:

答案 0 :(得分:2)

根据您的评论,更改以下行:

strlist = string.split(' ')

strlist = string.split()

这应该起作用,因为未指定sep时,默认为空白。 [\ t \ n \ r \ f \ v]都是空格。

答案 1 :(得分:1)

@VanTan解释了您的代码中的问题。但您也可以使用:

x = '43 -1 17'

res = ' '.join(map(str, sorted(map(int, x.split()))))

# '-1 17 43'

答案 2 :(得分:0)

此列表理解应处理您遇到的空白:

s = "\t42 4 -17 \n"
sorted([int(x) for x in " ".join(s.split()).split()])
  

[-17,4,42]