排序并返回字符串

问题描述 投票:0回答:3

所以我有此代码,我想在其中对字符串进行排序并返回它

    def sort_int_string(one_string):

        one_string = one_string.replace("\n", ' ')
        one_string = one_string.replace("\t", ' ')
        one_string = one_string.strip()

       if len(one_string) == 0:
            return ''
       else: 
            one_string = one_string.split(" ")
            one_string = [int(i) for i in one_string]
            one_string.sort()
            one_string = [str(i) for i in one_string]
            return ' '.join(one_string) 

但是当我尝试以此运行它时。

    hello = "\t42    4    -17\n"
    print(sort_int_string(hello)

我得到以10为底的int()的错误无效文字:”不知道为什么我明白了。请帮助。

python
3个回答
0
投票

您收到的错误是因为i的几个值是''(空字符串),并且您试图将它们转换为整数。就像上面的注释所建议的那样,使用stripsplit删除空格。然后排序:

def sort_int_string(one_string):
    return sorted(hello.strip().split())

hello = "\t42    4    -17\n"
print(sort_int_string(hello))  # returns ['-17', '4', '42']

0
投票

尝试一下

def sort_int_string(one_string):
  string_lst = one_string.strip().split(" ")
  string_lst.sort()
  return ''.join(string_lst)

hello = "\t42    4    -17\n"
print(sort_int_string(hello))

输出:-17442


0
投票

代码的问题是,数组中存在空字符串,并且在进行检查时会返回错误,因为无法将其转换为int。因此,只需执行一个条件检查i值是否不是空字符串即可。

def sort_int_string(one_string):

    one_string = one_string.replace("\n", ' ')
    one_string = one_string.replace("\t", ' ')
    one_string = one_string.strip()

    if len(one_string) == 0:
        return ''
    else: 
        one_string = one_string.split(" ")
        one_string =  [int(i) for i in one_string if i != ""]
        one_string.sort()
        one_string = [str(i) for i in one_string]
        return ' '.join(one_string) 

hello = "\t42    4    -17\n"
print(sort_int_string(hello))
© www.soinside.com 2019 - 2024. All rights reserved.