Я хочу создать функцию для разделения строки на несколько групп. Каждая группа будет разделена знаком «-», и длина каждого элемента должна быть 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)
но он по-прежнему показывает неправильный результат.
Вы можете начать с удаления всех нецифровых символов с помощью 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] Удалить.
я говорю два предложения