各位用户为了找寻关于Python实现将绝对URL替换成相对URL的方法的资料费劲了很多周折。这里教程网为您整理了关于Python实现将绝对URL替换成相对URL的方法的相关资料,仅供查阅,以下为您介绍关于Python实现将绝对URL替换成相对URL的方法的详细内容
本文实例讲述了Python实现将绝对URL替换成相对URL的方法。分享给大家供大家参考。具体分析如下:
一、问题:
公司一个项目需要上传图片,一开始同事将图片上传后结合当前主机拼成了一个绝对的URL(http://192.168.1.1:888/m/getimg?filename=xxx.jpg)由于同时给手机终端提供接口,在手机终端会引起一些bug,改完代码后要求将以前的uri替换成相对的URL(/m/getimg?filename=xxx.jpg),由于图片是用img标签嵌入到内容同时用a标签括起显示大图的,所以需要读取数据库并对内容进行替换
二、解决方法:
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33#!/usr/bin/env python
#-*- coding:utf-8 -*-
#
#
# author : cold night
# email : wh_linux@126.com
#
import
pymongo
import
re
from
StringIO
import
StringIO
conn
=
pymongo.Connection()
db
=
conn.test
def
replace_url():
regex
=
re.
compile
(r
'([href¦src])=["¦']http://.*?(/m/getimg?.*?)["¦']'
)
results
=
db[
'test'
].find()
db_coll
=
db[
'test'
]
def
replace(r):
content
=
r.get(
'content'
)
if
not
content:
return
content
=
StringIO(content)
content.seek(
0
)
result
=
StringIO()
for
line
in
content.readlines():
t
=
regex.sub(r
'1="2"'
, line)
result.write(t)
result.seek(
0
)
content
=
result.read()
if
content:
r[
'content'
]
=
content
_id
=
r.get(
'_id'
)
db_coll.update({
'_id'
:_id}, r)
results
=
[replace(i)
for
i
in
results]
if
__name__
=
=
"__main__"
:replace_url()
希望本文所述对大家的Python程序设计有所帮助。