Соответствие RegEx для удаления последовательности переменной длины в числе - PullRequest
0 голосов
/ 03 мая 2019

У меня есть массив целых чисел, которые выглядят так: X000Y000X и Y могут иметь длину 1, 2 или 3 и могут содержать 0.Я хочу преобразовать каждый элемент в массиве просто в X. Я чувствую, что для этого можно использовать регулярное выражение, но не могу найти подходящий для использования или как применить это ко всему массиву.

Пример: 14000010000 должно стать 140.

1 Ответ

1 голос
/ 03 мая 2019

Полагаю, X и Y не могут начинаться с 0.[1-9]\d{0,2} соответствует числу от 1 до 3 цифр, которое не начинается с 0.

Так что регулярное выражение для извлечения X и Y должно быть:

^([1-9]\d{0,2})000([1-9]\d{0,2})000$

Затем вы можете использовать re.sub(), чтобы удалить нули между X и Y.

regex = re.compile(r'^([1-9]\d{0,2})000([1-9]\d{0,2})000$');
i = 14000010000
istr = str(i)
new_i = int(regex.sub(r'\1\2', istr)

Вы можете отобразить это на вашем массиве

regex = re.compile(r'^([1-9]\d{0,2})000([1-9]\d{0,2})000$');
new_array = np.fromiter((int(regex.sub(r'\1\2', str(x)) for x in array), array.dtype)

См. Самый эффективный способ отобразить функцию на массив NumPy для различных способов отображения функции на массив Numpy.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...