Более эффективное регулярное выражение для извлечения данных об астрологическом доме? ⇐ Python
Более эффективное регулярное выражение для извлечения данных об астрологическом доме?
Я написал сценарий для извлечения данных астрологического дома из карты рождения в формате PDF. Мне интересно, можно ли использовать более эффективное регулярное выражение.
Текущая модель:
house_pattern = r'([A-Z]{2}|[A-Z][a-z]+\.|[0-9]|[0-9]{ 2})\s+([a-z])\s+(\d+°+.\d+\'+.\d+\")' Пример набора данных:
Дома (мест.) Склонение По возрастанию j 3°23'49" 23°23'37" ю.ш. 2 к 13°38'12" 16°43'48" ю.ш. 3 л 25°39'11" 1°43'39" ю.ш. IC a 28°32'56" 10°57'28" с.ш. 5 б 23° 5'14" 18°32'35" с.ш. 6 в 13°27'11" 22°24'45" с.ш. Описание d 3°23'49" 23°23'37" с.ш. 8 е 13°38'12" 16°43'48" с.ш. 9 f 25°39'11" 1°43'39" с.ш. MC g 28°32'56" 10°57'28" ю.ш. 11 ч 23°5’14″ 18°32’35″ ю.ш. 12 и 13°27'11" 22°24'45" ю.ш. Желаемые (и текущие) результаты: Формат: номер дома или точка, знак зодиака, градус/угловая минута/угловая секунда.
('Asc.', 'j', '3°23\'49"') ('2', 'к', '13°38\'12"') ('3', 'л', '25°39'11''') ('IC', 'a', '28°32\'56"') ('5', 'b', '23° 5'14'') ('6', 'c', '13°27\'11"') ('Desc.', 'd', '3°23\'49"') ('8', 'е', '13°38'12'') ('9', 'f', '25°39'11'') ('MC', 'g', '28°32\'56"') ('11', 'ч', '23° 5'14'') ('12', 'я', '13°27'11'') В настоящее время группа «номер дома/точка» использует массу слишком конкретных операторов ИЛИ. Как я могу выполнить рефакторинг, чтобы получить те же результаты?
Я опробовал приведенный выше шаблон и протестировал его на regex101.com. Я немного поискал в Google, но изо всех сил пытаюсь найти ответ, достаточно похожий, чтобы соответствовать моему варианту использования. Мой текущий шаблон возвращает правильные результаты, но кажется, что он мог бы быть намного лучше.
Я написал сценарий для извлечения данных астрологического дома из карты рождения в формате PDF. Мне интересно, можно ли использовать более эффективное регулярное выражение.
Текущая модель:
house_pattern = r'([A-Z]{2}|[A-Z][a-z]+\.|[0-9]|[0-9]{ 2})\s+([a-z])\s+(\d+°+.\d+\'+.\d+\")' Пример набора данных:
Дома (мест.) Склонение По возрастанию j 3°23'49" 23°23'37" ю.ш. 2 к 13°38'12" 16°43'48" ю.ш. 3 л 25°39'11" 1°43'39" ю.ш. IC a 28°32'56" 10°57'28" с.ш. 5 б 23° 5'14" 18°32'35" с.ш. 6 в 13°27'11" 22°24'45" с.ш. Описание d 3°23'49" 23°23'37" с.ш. 8 е 13°38'12" 16°43'48" с.ш. 9 f 25°39'11" 1°43'39" с.ш. MC g 28°32'56" 10°57'28" ю.ш. 11 ч 23°5’14″ 18°32’35″ ю.ш. 12 и 13°27'11" 22°24'45" ю.ш. Желаемые (и текущие) результаты: Формат: номер дома или точка, знак зодиака, градус/угловая минута/угловая секунда.
('Asc.', 'j', '3°23\'49"') ('2', 'к', '13°38\'12"') ('3', 'л', '25°39'11''') ('IC', 'a', '28°32\'56"') ('5', 'b', '23° 5'14'') ('6', 'c', '13°27\'11"') ('Desc.', 'd', '3°23\'49"') ('8', 'е', '13°38'12'') ('9', 'f', '25°39'11'') ('MC', 'g', '28°32\'56"') ('11', 'ч', '23° 5'14'') ('12', 'я', '13°27'11'') В настоящее время группа «номер дома/точка» использует массу слишком конкретных операторов ИЛИ. Как я могу выполнить рефакторинг, чтобы получить те же результаты?
Я опробовал приведенный выше шаблон и протестировал его на regex101.com. Я немного поискал в Google, но изо всех сил пытаюсь найти ответ, достаточно похожий, чтобы соответствовать моему варианту использования. Мой текущий шаблон возвращает правильные результаты, но кажется, что он мог бы быть намного лучше.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Регулярное выражение для сопоставления всех тегов
и извлечения атрибута «src»
Anonymous » » в форуме Php - 0 Ответы
- 10 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Python — регулярное выражение для извлечения определенных строк из текста
Anonymous » » в форуме Python - 0 Ответы
- 6 Просмотры
-
Последнее сообщение Anonymous
-