Найти - Пользователи
Полная версия: Работы с регулярными выражениями
Начало » Python для экспертов » Работы с регулярными выражениями
1 2 3
alafin
Всем привет.
Подскажите как мне выдрать из текста название городов?

<a href=“?cityid=574&lang=en” class=“citylist_city”>Air Force Academy (15)</a><br>
<a href=“?cityid=575&lang=en” class=“citylist_city”>Alamosa (1)</a><br>
<a href=“?cityid=576&lang=en” class=“citylist_city”>Applewood (0)</a><br>
<a href=“?cityid=577&lang=en” class=“citylist_city”>Arvada (6)</a><br>
<a href=“?cityid=578&lang=en” class=“citylist_city”>Aurora (8)</a><br>
<a href=“?cityid=579&lang=en” class=“citylist_city”>Berkley (0)</a><br>
<a href=“?cityid=580&lang=en” class=“citylist_city”>Black Forest (0)</a><br>
<a href=“?cityid=581&lang=en” class=“citylist_city”>Boulder (24)</a><br>
Т.е. должно получиться:
Air Force Academy
Alamosa
Applewood
ofigetitelno
:)
s
alafin
ofigetitelno, так не подойдет т.к. это я выдрал кусок из html файла. А по сути у меня имеется обычная html страничка в которой помимо тэгов <a> есть еще и друга куча тегов.
ods
Зависит от того, насколько может меняться оформление ссылок в HTML. Вот вариант, основанный на некоторых предположениях (возможны перестановки атрибутов, для нужных ссылок всегда проставлен (и только один) класс citylist_city и ещё ограничения по мелочам, чтоб не слишком усложнять регексп:

re.compile(r'<a*\s+class=?citylist_city?*>(?P<city>+)\s+\((?P<count>\d+)\)</a>').findall(text)
tabajara
Регулярними виразами то не получиться. Є така штука - HTMLParser, нею дуже легко можна розпарсити хтмл-ку. Пишуть що вона погано парсить, але я пробував і в мене вона працювала без всяких помилок.
alafin
Спасибо всем, но я выкрутился по другому, все теми же регулярными выражениями

m = re.search('<a href=(.*)>(.*) \(\d+\)</a><br>', line, re.DOTALL)
m.group(2)
ods
alafin
Спасибо всем, но я выкрутился по другому, все теми же регулярными выражениями
Код получился сильно завязанным на текущее оформление HTML. Хорошо, если его изменение не предполагается. Если же в одной строке окажутся 2 ссылки, то он перестанет работать. Кроме того, имеет ли смысл использовать внешний цикл с проверкой, если есть методы findall и finditer?
alafin
ods, мне как раз и нужно было забрать информацию именно с одного сайта, что успешно и получилось.
well
Всем привет, у меня такая проблемка: есть текст, разделенный кавычками. Я хочу разбить его на элементы и пробежаться по каждому регуляркой:

reg = re.compile (r“\ACN=(?P<need>.*),OU=(?P<OU>PCs.*|S.*),OU=UKR”)
spl = re.split (r“\”“, s)
for i in spl:
if (i != ”\n"):
i = str (i)
ss = reg.match (i)
print ss.group ('need')

Выдает ошибку:
Traceback (most recent call last):
File “<string>”, line 74, in run_nodebug
File “D:\Docs\Python\DelPC.py”, line 18, in <module>
print ss.group ('need')
AttributeError: ‘NoneType’ object has no attribute ‘group’
Если вместо ss = reg.match (i) вставляю ss = reg.match ('CN=OFF_PC_1,OU=PCs,OU=KKK,DC=gold,DC=lan') , то все получается. Даже не знаю, где уже копать :(
Viper
А значение i смотрел при ошибке?
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