0

所以我有所有这些 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 可以做这样的事情。但我似乎找不到任何关于如何做这样的事情的文档。

4

3 回答 3

0

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

于 2011-08-01T23:14:53.157 回答
0

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

于 2011-08-01T23:16:45.923 回答
0

我建议您使用 Beautiful Soup 将您的 HTML 解析为标签树,然后编写 Python 代码来遍历标签树和正文文本并更改为标题大小写。你可以使用正则表达式来做到这一点,但 Python 有一个内置的字符串方法可以做到这一点:

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

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

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

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

PS您实际上可以将函数传递给,re.sub()因此如果需要,您可以进行疯狂的强大处理。在您的情况下,我认为 Python 的.title()方法会为您完成,但这是我发布的另一个答案,其中包含有关传入函数的信息。

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

于 2011-08-02T01:58:27.397 回答