Найти - Пользователи
Полная версия: Регулярное выражение для парсинга import statement
Начало » Python для экспертов » Регулярное выражение для парсинга import statement
1
pyhappy
Добрый день.
Не получается написать регулярку, которая отбрали импортируемые модули, сейчас она выдает все включая import, хотелось бы чтобы import отсутствовал в результатах, но при этом именно с него должна начинаться строка
import re
pattern = r"(?:(\b\w+\b)[, ]?)"
string1 = "             import oss,sys,fff,gogg"
result = re.findall(pattern,string1)
#>>>result = ['import', 'oss', 'sys', 'fff', 'gogg']

до этого я использовал такое
pattern = r"^(?:[ ]+)?import ([A-z/.0-9]*)"
но оно работает только если импортируется один модуль, а не несколько как в примере string1
odnochlen
string1 = "             import oss,sys,fff,gogg"
s = re.findall(str_, "import .*")
result = [x.strip() for x in s.split(',')]
А вообще идея плохая. Что будет с from x import y? Или с import (x,y)? И еще с парой примеров?
sergeek
import ast
умеет это
pyhappy
sergeek
да, я знаю что можно было импортнуть всю строку с начала импорта до конца или до точки с запятой, но и потом обработать питоном, но чего уж очень хочется через re
sergeek
тогда вот еще пара примеров:
re.findall('\w+', re.match(' *import (.+)','import ast, re').group(1))
Out[93]: ['ast', 're']
re.split('\W+', re.match(' *import (.+)','import ast, re').group(1))
Out[94]: ['ast', 're']
re.findall('\w+','import ast, re')[1:]
Out[95]: ['ast', 're']
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