Python搜索大写字母的HTML文档

时间:2011-08-01 23:06:14

标签: python regex coda letters capitalize

所以这些html文档在alt标签,标题tage,链接文本等各个地方都有大写字母串。

<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 :(得分:0)

我认为你需要像 BeautifulSoup 这样的HTML解析器,剩下的就是细节了。

答案 1 :(得分:0)

可能有值得注意的例外,全自动编辑不是一个好主意,但如果你有一个正则表达式编辑器,你可以搜索/ [A-Z] [A-Z] + /并手动替换。

答案 2 :(得分:0)

我建议您使用Beautiful Soup将HTML解析为标签树,然后编写Python代码以遍历标签和正文文本树并更改为标题案例。您可以使用正则表达式来执行此操作,但Python有一个内置的字符串方法可以执行此操作:

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

如果你需要一个模式来匹配全部大写的字符串,我建议你使用:"[^a-z]*[A-Z][^a-z]*"

这意味着“匹配零或多个除小写字符之外的任何内容,然后匹配单个大写字符,然后零或多个除小写字符外的任何内容”。

例如,此模式将正确匹配“BUY 99 BEERS”。它不会匹配“如此非常安静”,因为它甚至没有一个大写字母。

P.S。您实际上可以将函数传递给re.sub(),这样您就可以在需要时进行疯狂的强大处理。在你的情况下,我认为Python的.title()方法会为你做,但这是我发布的另一个回答有关传递函数的信息。

How to capitalize the first letter of each word in a string (Python)?