Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 25, 2014 13:30:09

tuz
Зарегистрирован: 2013-04-14
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Чистка атрибутов

Добры день.
Есть такая строка:

<a href="http://site.com/images/.../image.jpg"><img alt="изображение" class="aligncenter size-full wp-image-6026" height="346" src="http://site.com/images/.../image.jpg" width="530" /></a>
Необходимо убрать тег <a> и атрибуты классов. Тоесть привести к такому виду:
<img alt="изображение" src="http://site.com/images/.../image.jpg" width="530" />
Как это реализовать правильно?
Заранее всем спасибо!

Офлайн

#2 Фев. 25, 2014 14:09:45

alexsis
Зарегистрирован: 2013-07-26
Сообщения: 148
Репутация: +  9  -
Профиль   Отправить e-mail  

Чистка атрибутов

import re
p = re.compile('<img.*/>')
string = p.findall(string)

p.s. http://docs.python.org/2/library/re.html

Отредактировано alexsis (Фев. 25, 2014 14:11:48)

Офлайн

#3 Фев. 25, 2014 14:18:10

tuz
Зарегистрирован: 2013-04-14
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Чистка атрибутов

alexsis
import re p = re.compile('<img.*/>') string = p.findall(string)
Не совсем то. Задача состоит не в получении нужных атрибутов и т.п. В этом ничего сложного нет, а именно в замене: убирании тега <a> и удаление class=…

Офлайн

#4 Фев. 25, 2014 14:34:20

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2843
Репутация: +  186  -
Профиль   Отправить e-mail  

Чистка атрибутов

Самое первое что пришло в голову:
1) Через регулярку находишь подстроку.
2) через find находишь её начало
3) через len находишь её длину
4) через срез удаляешь фрагмент строки



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#5 Фев. 25, 2014 14:37:14

tuz
Зарегистрирован: 2013-04-14
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Чистка атрибутов

Rodegast
Самое первое что пришло в голову:1) Через регулярку находишь подстроку.2) через find находишь её начало3) через len находишь её длину4) через срез удаляешь фрагмент строки
Спасибо. Вроде все элементарно, но вот мой мозг что-то сегодня не работает. )))

Офлайн

#6 Фев. 25, 2014 17:38:52

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

Чистка атрибутов

навскидку вот

import re
pattern = re.compile(r'(<a[^>]+>)|(</a>)|(class="[^"]+")')
print pattern.sub('', text)

Офлайн

#7 Фев. 25, 2014 21:30:48

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Чистка атрибутов

>>> import lxml.html
>>> 
>>> s = """<a href="http://site.com/images/.../image.jpg"><img alt="изображение" class="aligncenter size-full wp-image-6026" height="346" src="http://site.com/images/.../image.jpg" width="530" /></a>"""
>>> 
>>> tag = lxml.html.fragment_fromstring(s).find('img')
>>> del tag.attrib['class']
>>> out = lxml.html.tostring(tag, encoding=str)
>>> out
'<img alt="изображение" height="346" src="http://site.com/images/.../image.jpg" width="530">'
>>>



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version