Поиск в Python HTML-документ для заглавных букв - PullRequest
0 голосов
/ 02 августа 2011

Итак, у меня есть все эти HTML-документы, в которых есть прописные буквы в разных местах в тэгах alt, заголовок, текст ссылки и т. Д.

<li><a title='BUY FOOD' href="http://www.example.com/food.html'>BUY FOOD</a></li>

Что мне нужно сделать, это заменить все буквы, кроме первой, строчными буквами.Вот так:

<li><a title='Buy Food' href="http://www.example.com/food.html'>Buy Food</a></li>

Теперь, как я могу сделать это либо в Python, либо в какой-либо форме регулярных выражений.Мне сказали, что мой редактор Coda может сделать что-то подобное.Но я не могу найти документацию о том, как сделать что-то подобное.

Ответы [ 3 ]

0 голосов
/ 02 августа 2011

Могут быть примечательные исключения, для которых полностью автоматическое редактирование не является хорошей идеей, но если у вас есть редактор с поддержкой регулярных выражений, вы можете найти / [A-Z] [A-Z] + / и заменить вручную.

0 голосов
/ 02 августа 2011

Я предлагаю вам использовать Beautiful Soup для разбора HTML-кода на дерево тегов, а затем написать код Python, чтобы пройтись по дереву тегов и основного текста и перейти к регистру заголовков.Вы можете использовать регулярное выражение, чтобы сделать это, но в Python есть встроенный строковый метод, который сделает это:

"BUY FOOD".title()  # returns "Buy Food"

Если вам нужен шаблон для сопоставления строк, которые являются заглавными, я предлагаю вам использовать:"[^a-z]*[A-Z][^a-z]*"

Это означает, что "соответствует нулю или большему количеству всего, кроме символа нижнего регистра, затем одного символа верхнего регистра, затем нуля или большего числа чего-либо, кроме символа нижнего регистра".

Этот шаблон будет правильно соответствовать, например, "КУПИТЬ 99 ПИВО".Он не будет соответствовать «очень тихому», потому что в нем нет даже одной буквы в верхнем регистре.

PS Вы можете фактически передать функцию в re.sub(), чтобы вы могли потенциально выполнять сумасшедшую мощную обработку, если вам нужноЭто.В вашем случае я думаю, что метод Python .title() сделает это за вас, но вот еще один ответ, который я опубликовал с информацией о передаче функции.

Как использовать заглавные буквы первой буквы каждого слова встрока (Python)?

0 голосов
/ 02 августа 2011

Я думаю, что вам нужен HTML-парсер, такой как BeautifulSoup , остальное будет в деталях.

...