crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Python. Регулярные выражения. Данные между кавычек
Гость_Krakozabra_*
сообщение 15.9.2014, 12:14
Сообщение #1





Гости








    


Привет. Есть задача в обработке текста, точнее html кода. Все работает за исключением выбора текста между кавычками.
Цитата
m = re.findall('href=".*\"', ht)
print m[0]


Первое вхождение срабатывает на ура, второе с примесью текста, третье вхождение также проходит хорошо, каждое последующее с примесями. Подскажите, как должна выглядеть эта регулярка, я уже голову сломал.

Всем спасибо.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ahalaj
  опции профиля:
сообщение 15.9.2014, 17:59
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 47
Регистрация: 14.6.2014
Пользователь №: 4166

Спасибо сказали: 13 раз(а)




Репутация:   1  


Цитата(Krakozabra @ 15.9.2014, 13:14) *
Привет. Есть задача в обработке текста, точнее html кода. Все работает за исключением выбора текста между кавычками.
Цитата
m = re.findall('href=".*\"', ht)
print m[0]


Первое вхождение срабатывает на ура, второе с примесью текста, третье вхождение также проходит хорошо, каждое последующее с примесями. Подскажите, как должна выглядеть эта регулярка, я уже голову сломал.

Всем спасибо.

Искать надо от открывающей кавычки до закрывающей и чтобы внутри кавычек не было. Вот это сработает:

#!/usr/bin/env python

import re
import sys

with open(sys.argv[1], "r") as f:
    data = f.readlines()

linenum = 1
for line in data:
    m = re.findall('href="[^"]*"', line)
    if m:
        print("line %d:" % linenum)
        occurrencenum = 1
        for occurrence in m:
            print("  occurrence %d: %s" % (occurrencenum, occurrence))
            occurrencenum += 1
    linenum += 1
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 16.9.2014, 16:36
Сообщение #3


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


Не используйте регулярные выражения для парсинга html.
http://stackoverflow.com/questions/6751105...planation-in-la

Серьезно, используйте BeautifulSoup например или любой другой готовый парсер.
http://www.crummy.com/software/BeautifulSoup/
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 19.4.2024, 6:18