Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 3, 2023 14:51:42

IvanPetrov
Зарегистрирован: 2023-10-03
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите написать регулярку для re

Здраствуйте, помогите написать регулярку для модуля re. В прикрепленном изображении ожидаемый результат

Дано:

 '''
+--+--+--+--+--+
|  |           |
+  +  +--+--+--+
|  |  |  |  |  |
+--+--+--+--+--+
'''

Желаемое:
  '''
+-+-+-+-+-+
| |       |
+ + +-+-+-+
| | | | | |
+-+-+-+-+-+
'''

Отредактировано IvanPetrov (Окт. 3, 2023 15:01:10)

Прикреплённый файлы:
attachment Screenshot from 2023-10-03 15-29-56.png (11,5 KБ)

Офлайн

#2 Окт. 3, 2023 16:25:29

IvanPetrov
Зарегистрирован: 2023-10-03
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите написать регулярку для re

Сделал сам в итоге:

 from re import findall
def to_matrix(line: str) -> list:
    row_rgx = r"[\+\|].+(?<!\n|')"
    split_rgx = r"\+|\||--|\s{3}|\s{2}"
    wall = ['+', '--', '|']
    out = []
    for r in findall(row_rgx, line):
        a = []
        for c in findall(split_rgx, r):
            if c in wall:
                a.append(1)
            else:
                a.extend([0] * (len(c) - 1))
        out.append(a)
    return out
if __name__ == '__main__':
    arr = '''\
            +--+--+--+
            |  |     |
            +  +  +--+
            |  |  |  |
            +--+--+--+'''
    print(*to_matrix(arr), sep='\n')

Отредактировано IvanPetrov (Окт. 3, 2023 16:26:38)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version