Найти - Пользователи
Полная версия: Регулярные выражения в строках
Начало » Python для новичков » Регулярные выражения в строках
1
SergeyChmutov
Добрый день.
Есть список 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 и все что после него.
Заранее спасибо.
JOHN_16
 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
>>> 
SergeyChmutov
JOHN_16
Огромное спасибо.
py.user.next
  
>>> 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']
>>>
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB