Python在HTML文档中搜索大写字母

0 投票
3 回答
730 浏览
提问于 2025-04-16 22:41

我有很多HTML文档,其中有一些地方的文字都是大写字母,比如在替代文本、标题标签、链接文本等等。

<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

我觉得你需要一个像BeautifulSoup这样的HTML解析器,其他的就是一些细节了。

0

虽然有些特殊情况不适合完全自动化编辑,但如果你有一个支持正则表达式的编辑器,你可以手动搜索大写字母开头的单词,比如用 /[A-Z][A-Z]+/ 这个规则,然后自己替换。

0

我建议你使用Beautiful Soup这个工具来把你的HTML解析成一个标签树,然后写一些Python代码来遍历这个标签树和正文,把文字转换成标题格式。你可以用正则表达式来做到这一点,但Python其实有一个内置的方法可以直接实现:

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

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

这个意思是“匹配零个或多个不是小写字母的字符,然后是一个大写字母,最后是零个或多个不是小写字母的字符”。

比如,这个模式可以正确匹配“BUY 99 BEERS”。但它不会匹配“so very quiet”,因为后者没有任何大写字母。

顺便说一下,你其实可以把一个函数传给re.sub(),这样如果需要的话,你可以进行非常强大的处理。在你的情况下,我觉得Python的.title()方法就能满足你的需求,不过这里还有我之前发的另一个回答,里面有关于传入函数的信息。

如何把字符串中每个单词的首字母大写(Python)?

撰写回答