我编写了一个脚本来从出生星盘PDF中提取占星术宫位数据。我想知道是否可以使用更高效的正则表达式。
当前模式:
house_pattern = r'([A-Z]{2}|[A-Z][a-z]+\.|[0-9]|[0-9]{2})\s+([a-z])\s+(\d+°+.\d+\'+.\d+\")'
示例数据集:
Houses (Plac.) Declination
Asc. j 3°23'49" 23°23'37" S
2 k 13°38'12" 16°43'48" S
3 l 25°39'11" 1°43'39" S
IC a 28°32'56" 10°57'28" N
5 b 23° 5'14" 18°32'35" N
6 c 13°27'11" 22°24'45" N
Desc. d 3°23'49" 23°23'37" N
8 e 13°38'12" 16°43'48" N
9 f 25°39'11" 1°43'39" N
MC g 28°32'56" 10°57'28" S
11 h 23° 5'14" 18°32'35" S
12 i 13°27'11" 22°24'45" S
期望(和当前)结果:
格式为:宫位编号或点、黄道星座、度/分/秒。
('Asc.', 'j', '3°23\'49"')
('2', 'k', '13°38\'12"')
('3', 'l', '25°39\'11"')
('IC', 'a', '28°32\'56"')
('5', 'b', '23° 5\'14"')
('6', 'c', '13°27\'11"')
('Desc.', 'd', '3°23\'49"')
('8', 'e', '13°38\'12"')
('9', 'f', '25°39\'11"')
('MC', 'g', '28°32\'56"')
('11', 'h', '23° 5\'14"')
('12', 'i', '13°27\'11"')
目前,“宫位编号/点”组使用了很多过于特定的OR条件。如何重构以得到相同的结果?
我已经尝试了上述模式并在regex101.com上进行了测试,但我通过搜索并未找到足够相似的案例来适应我的需求。我当前的模式确实返回了正确的结果,但看起来应该可以做得更好。