我尝试了许多不同的东西,并查看了许多SO答案(以及来自其他网站的东西),我似乎无法想出这个。那里有很多相互矛盾的信息。
我有一些内容存储在PostgreSQL中,UTF8(SET client_encoding ='UTF8';)。我从数据库中提取所述内容,然后在一个范围内包装任何“£”符号。
相关摘要:
for i in range(0, len(results)):
content = results[i][2].decode('utf8')
pattern = re.compile(ur'(\u00A3[0-9]+)(\.[0-9]{1,2})?', re.UNICODE)
content = re.sub(pattern, '<span class="price">\0\1</span>', content)
app.logger.debug(test)
示例输出:
DEBUG in **** [****.py:143]:
Prices from only <span class="price"></span> for a framed picture.
编辑:我知道REGEXP可能不好。
答案 0 :(得分:1)
尝试使用capturing/named group in regex首先检查正则表达式是否正在使用常规标题,然后仅包装您需要的内容或删除您需要的内容:
for i in range(0, len(results)):
pattern = re.compile('[0-9]*(?P<todelete>\W)?')
todelete = pattern.match(i[0][2]).group('todelete')
content = todelete.sub("", i[0][2])
顺便从posgresql中提取信息,我建议psycopg2在一个简单的列表中正确地获取一个或多个结果并尊重一般编码:这应该可以避免很多麻烦。