【发布时间】:2015-09-09 18:40:59
【问题描述】:
我想获取 HTML 文档中的所有内容并将句子大写(在段落标签内)。输入文件的所有内容全部大写。
我的尝试有两个缺陷 - 首先,它删除了段落标签本身,其次,它只是将匹配组中的所有内容都小写。我不太清楚 capitalize() 是如何工作的,但我认为它会使句子的第一个字母......大写。
也可能有比正则表达式更简单的方法来做到这一点。这是我所拥有的:
import re
def replace(match):
return match.group(1).capitalize()
with open('explanation.html', 'rbU') as inf:
with open('out.html', 'wb') as outf:
cont = inf.read()
par = re.compile(r'(?s)\<p(.*?)\<\/p')
s = re.sub(par, replace, cont)
outf.write(s)
【问题讨论】:
-
首先,不要使用正则表达式来提取p标签的内容,使用Beautifulsoup。
-
我只是想做一些快速简单的一次性使用。我通常不接触 HTML。
-
永远不要在 HTML/XML 上使用正则表达式,因为同样的情况,StackOverflow 用户会发疯。 stackoverflow.com/a/1732454/1066393
-
Beautifulsoup 又快又简单,没问题。
-
关于
capitalize(),不管是不是句子,都会把第一个字母大写。提取句子的一种可能方法是使用 nltk。
标签: python html regex python-2.7