Сортировка строк с числами в Python

#python #string #sorting

#python #строка #сортировка

Вопрос:

У меня есть эта строка:

 string = '9x3420aAbD8'
  

Как я могу превратить строку в:

 '023489ADabx'
  

Какую функцию я бы использовал?

Ответ №1:

Вы можете просто использовать встроенную функцию sorted для сортировки строки лексикографически. Он принимает итерацию, сортирует каждый элемент, а затем возвращает отсортированный список. Согласно документации:

sorted(iterable[, key][, reverse])

Возвращает новый отсортированный список из элементов в iterable.

Вы можете применить это следующим образом:

 >>> ''.join(sorted(string))
'023489ADabx'
  

Since sorted возвращает список, например, так:

 >>> sorted(string)
['0', '2', '3', '4', '8', '9', 'A', 'D', 'a', 'b', 'x']
  

Просто соедините их вместе, чтобы создать нужную строку.

Комментарии:

1. Это лучший и единственный способ сделать это.

Ответ №2:

Вы можете использовать sorted() функцию для сортировки строки, но это вернет список

 sorted(string)
['0', '2', '3', '4', '8', '9', 'A', 'D', 'a', 'b', 'x']
  

чтобы превратить это обратно в строку, вам просто нужно присоединиться к ней, что обычно делается с помощью ''.join()

Итак, все вместе:

 sorted_string = ''.join(sorted(string))