Как разбить строку на группы с некоторыми правилами?

Mhd Ridho Private

Я хочу создать функцию для разделения строки на несколько групп. Каждая группа будет разделена знаком «-», и длина каждого элемента должна быть 3, но если длина последнего элемента равна 1, один символ из последних двух элементов переместится в последний элемент. Я не знаю, как объяснить это по-английски, но я постараюсь дать объяснение, используя свою картинку ниже:

введите описание изображения здесь

Я написал свой собственный код, как показано ниже:

    def groupNumber(x):
        for char in [' ','-']:
            if char in x:
                x=x.replace(char,"")
        t = [x[i:i+3] for i in range(0, len(x), 3)]
        print('-'.join(map(str, t)))

    x='993141 -1 1323 14-232'
    groupNumber(x)

но он по-прежнему показывает неправильный результат.

Mrgeek

Вы можете начать с удаления всех нецифровых символов с помощью re.sub, а затем разделить на части по три и проверить последнюю строку:

import re

def groupNumber(x):
    #   replace all '\D' (non-digit characters) with '' (i.e., remove them)
    x = re.sub(r'\D', '', x)
    #   extract chunks of three
    x = [x[i:i+3] for i in range(0, len(x), 3)]
    #   if last string has length 1
    if len(x[-1]) == 1:
      #   move the last digit of the next-to-last string to the last string
      x[-2], x[-1] = x[-2][:-1], x[-2][-1] + x[-1]
    #   glue everything together with a `-` and return the result
    return '-'.join(x)

x='993141 -1 1323 14-232'
print(groupNumber(x))

Вывод:

993-141-113-231-42-32

Эта статья взята из Интернета, укажите источник при перепечатке.

Если есть какие-либо нарушения, пожалуйста, свяжитесь с[email protected] Удалить.

Отредактировано в
0

я говорю два предложения

0обзор
Войти в системуУчаствуйте в комментариях

Статьи по теме

Почему 11010100 << 1 равна 110101000, а не 10101000?

Одд Java тройная поведение при присвоении значения. Что Java делает за кулисами, чтобы это произошло?

Java 8 - Как получить отдельные значения из Карты списков?

Как решить й - загар (х) = 0 с SymPy

Инициализируйте массив NumPy на основе его индекса

Проверьте, все ли стороны многомерного массива NumPy являются массивами нулей

Объявление и определение массива C ++ и Java: различия

Spring безопасности переключиться на аутентификацию Ldap и полномочия базы данных

Многоязычная база данных, с запасным вариантом по умолчанию

Как определить строку, которая содержит только пробелы?

Spring @Transactional последовательно откатывает транзакцию при исключении

Расположение предыдущей страницы на IronRouter

пороговая обработка изображения RGB в OpenCV

Загрузить видео из файла с помощью Kinect для Windows с SDK v2.0

Код драйвера в модуле ядра не выполняется?

Telegram в приложении iOS

Поиск зависимых имен в экземпляре шаблона C ++

numpy: в true_divide обнаружено недопустимое значение

Accessing NumPy array elements not in a given index list

Индексирование массива Python numpy. Как это работает?

подгонка круга к двоичному изображению

UiPickerView с настраиваемой фиксированной меткой и автоматическим размещением

Получить поле перечисления из структуры: невозможно выйти из заимствованного содержимого

CUDA compilation issue with CMake

матрица вращения в openCV

удаление записей из массива numpy

установка оберток python для vlfeat

IntelliJ Maven / Gradle Proxy ne fonctionne pas

Сложить весь столбец для таблицы в CSS

синхронизированное ключевое слово и блокировки методов экземпляра

TOP список

  1. 1

    Распределение Рэлея Curve_fit на Python

  2. 2

    TypeError: store.getState não é uma função. (Em 'store.getState ()', 'store.getState' é indefinido, como posso resolver esse problema?

  3. 3

    В типе Observable <unknown> отсутствуют следующие свойства из типа Promise <any>.

  4. 4

    Как добавить Swagger в веб-API с поддержкой OData, работающий на ASP.NET Core 3.1

  5. 5

    How to click an array of links in puppeteer?

  6. 6

    Merging legends in plotly subplot

  7. 7

    ViewPager2 мигает / перезагружается при смахивании

  8. 8

    Отчеты Fabric Debug Craslytic: регистрация, отсутствует идентификатор сборки, применить плагин: io.fabric

  9. 9

    How to normalize different curves drawn with geom = "step" when using stat_summary

  10. 10

    无法通过Vue在传单中加载pixiOverlay

  11. 11

    как я могу удалить vue cli 2?

  12. 12

    Как я могу нарисовать заполненный прямоугольник в JFreeChart?

  13. 13

    SQL Вычтите две строки друг от друга в одном столбце, чтобы получить результат

  14. 14

    Elasticsearch - Нечеткий поиск не дает предложения

  15. 15

    Single legend for Plotly subplot for line plots created from two data frames in R

  16. 16

    Описание моего типа Parser как серии преобразователей монад

  17. 17

    Как изменить цвета запятых и скобок в VS Code

  18. 18

    Сброс значения <input type = "time"> в Firefox

  19. 19

    Почему прокси в vue.config.js 404

  20. 20

    Как установить параметр -noverify с gradle ktx для робоэлектрических тестов Android?

  21. 21

    В чем разница между ifstream, ofstream и fstream?

популярныйтег

файл