Python在HTML文档中搜索大写字母
我有很多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()
方法就能满足你的需求,不过这里还有我之前发的另一个回答,里面有关于传入函数的信息。