【问题标题】:Python search HTML document for capital lettersPython 在 HTML 文档中搜索大写字母
【发布时间】:2011-10-17 20:14:59
【问题描述】:

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

【问题讨论】:

标签: python regex coda letters capitalize


【解决方案1】:

我建议您使用 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() 方法会为您解决问题,但这是我发布的另一个答案,其中包含有关传入函数的信息。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我一直在使用 BeauitfulSoup。但似乎无法正确使用正则表达式。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-24
      • 1970-01-01
      • 1970-01-01
      • 2013-06-27
      相关资源
      最近更新 更多