如何从无序的字符串中返回有序的字符串?

时间:2019-06-14 15:50:53

标签: python string

我正在尝试解决一个问题,但是正在努力解决该问题的逻辑方法。问题如下:

“您的任务是对给定的字符串进行排序。字符串中的每个单词将包含一个数字。此数字是单词在结果中应具有的位置。

注意:数字可以是1到9。因此1是第一个单词(不是0)。

如果输入字符串为空,则返回一个空字符串。输入字符串中的单词将仅包含有效的连续数字。“

例如"is2 Thi1s T4est 3a" --> "Thi1s is2 3a T4est"

到目前为止,我已经尝试了以下方法:

def order(sentence):
  my_string = "is2 Thi1s T4est 3a"
  new_string = " "
  for i in my_string:
      if i in my_string == none
          return new_string = " "
      else:
          if i in my_string 
  return new_string

但是坚持继续下一个步骤。如何将“从1开始按顺序排列的单词”放入python代码的for循环中?

我是python和程序设计的初学者,所以我不确定通过创建空字符串new_string然后排序{{1 }}。这是解决这个问题的好方法吗?我被困在哪个方向上。

1 个答案:

答案 0 :(得分:0)

您可以做到:

       r = "is2 Thi1s T4est 3a"
       def get_number(w) :
          for x in w :
              try :
                  i = int(x)
                  return i
              except :
                  pass
          return None
       ordered_list = " ".join((sorted( s.split(' ') , key = get_number)))

函数get_number允许获取单词中出现的第一个数字,因此我们对句子进行拆分以获取其组成的单词,r.split(' ')给出['is2', 'Thi1s', 'T4est', '3a'],然后对单词进行排序使用ordered内置函数创建list,它需要一个列表和一个函数,该函数产生要在其上排序列表的键,并输出排序后的列表,然后我们使用内置函数join来加入列表使用空格分隔符列出。 输出:

Out[425]: 'Thi1s is2 3a T4est'