Форум сайта python.su
0
Добрый день.
Есть список OPC-тегов в формате .csv, который имеет следующий вид (жирным выделил то, что надо вычленить):
…
NPS_GRY.SW_9.UControl
NPS_GRY.SW_121M.AlarmStop
NPS_SYN.MNA_2.SW_IN.ToClose
NPS_TAE.SW_7_3.ToClose
…
Надо вычленить полный тег SW_*, от точки до точки, именно то, что выделено жирным. После SW обязательно идет “_”, а вот дальше бывает много разных вариантов. Подскажите как это можно сделать. Пробовал сам, но в регулярках недостаточно силен. Получалось вычленить либо “SW_” либо SW и все что после него.
Заранее спасибо.
Офлайн
221
john_16@Linux-home ~ $ python3 Python 3.5.2 (default, Nov 17 2016, 17:05:23) [GCC 5.4.0 20160609] on linux Type "help", "copyright", "credits" or "license" for more information. >>> ss = '''NPS_GRY.SW_9.UControl ... NPS_GRY.SW_121M.AlarmStop ... NPS_SYN.MNA_2.SW_IN.ToClose ... NPS_TAE.SW_7_3.ToClose''' >>> >>> import re >>> re.findall('(SW_.*?)\.', ss) ['SW_9', 'SW_121M', 'SW_IN', 'SW_7_3'] >>> >>> for s in ss.splitlines(): ... print(re.findall('(SW_.*?)\.', s)[0]) ... SW_9 SW_121M SW_IN SW_7_3 >>>
Офлайн
0
JOHN_16Огромное спасибо.
Офлайн
857
>>> import re >>> >>> text = """\ ... NPS_GRY.SW_9.UControl ... NPS_GRY.SW_121M.AlarmStop ... NPS_SYN.MNA_2.SW_IN.ToClose ... NPS_TAE.SW_7_3.ToClose ... """ >>> >>> out = re.findall(r'SW_[^.]+', text) >>> out ['SW_9', 'SW_121M', 'SW_IN', 'SW_7_3'] >>>
Офлайн