Разбор диапазона целых чисел в списке - PullRequest
1 голос
/ 28 января 2010

Я только начал изучать Python и столкнулся с небольшой проблемой. Мне нужно проанализировать текстовый файл, а точнее HTML-файл (но его синтаксис очень странный - divs после divs после divs, результат Google «Просмотреть как HTML» для определенного PDF, который я не могу извлечь из текста потому что у него грязная таблица, выполненная в m $ word).

В любом случае, я выбрал довольно низкоуровневый подход, потому что мне просто нужны данные как можно скорее, и, поскольку я начинаю изучать Python, я подумал, что изучение основ принесет мне пользу.

У меня все сделано, за исключением небольшой части, в которой мне нужно получить набор целых чисел из набора элементов div. Вот пример:

<div style="position:absolute;top:522;left:1020"><nobr>*88</nobr></div>

Теперь числа, которые я хочу получить, находятся внутри <nobr></nobr> (в данном случае '588'), и, поскольку это довольно грязный файл, я должен убедиться, что то, что я получаю, является правильным. Для этого этому номеру внутри <nobr></nobr> должен предшествовать "left:1020", "left:1024" или "left:1028". Это происходит из-за автоматического преобразования, и лучшим выбором будет получить все числа, перед которыми, по моему мнению, стоит left:102[0-].

Для этого я пытался использовать:

for o in re.finditer('left:102[0-9]"><nobr>(.*?)</nobr></div>', words[index])
    out = o.group(1)

Но пока что нет такой удачи ... Как я могу получить эти цифры?

Спасибо заранее, J.

1 Ответ

1 голос
/ 28 января 2010

Не используйте регулярные выражения для разбора HTML. BeautifulSoup сделает эту работу легкой.

Что касается вашей конкретной проблемы, возможно, вам не хватает двоеточия в конце первой строки:

for o in re.finditer('left:102[0-9]"><nobr>(.*?)</nobr></div>', words[index]):
    out = o.group(1)

Если это не проблема, пожалуйста, опубликуйте полученную ошибку с ожидаемым результатом.

...