Python实现将绝对URL替换成相对URL的方法


Posted in Python onJune 28, 2015

本文实例讲述了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标签括起显示大图的,所以需要读取数据库并对内容进行替换

二、解决方法:

#!/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程序设计有所帮助。

Python 相关文章推荐
Python多线程实例教程
Sep 06 Python
分享一个可以生成各种进制格式IP的小工具实例代码
Jul 28 Python
pandas把dataframe转成Series,改变列中值的类型方法
Apr 10 Python
django如何连接已存在数据的数据库
Aug 14 Python
解决python写入带有中文的字符到文件错误的问题
Jan 31 Python
python生成带有表格的图片实例
Feb 03 Python
Python multiprocessing多进程原理与应用示例
Feb 28 Python
pytorch GAN生成对抗网络实例
Jan 10 Python
Python selenium键盘鼠标事件实现过程详解
Jul 28 Python
彻底解决Python包下载慢问题
Nov 15 Python
python自动化发送邮件实例讲解
Jan 04 Python
python pygame 开发五子棋双人对弈
May 02 Python
python实现将html表格转换成CSV文件的方法
Jun 28 #Python
python实现根据主机名字获得所有ip地址的方法
Jun 28 #Python
python自动zip压缩目录的方法
Jun 28 #Python
python查找指定具有相同内容文件的方法
Jun 28 #Python
python中getaddrinfo()基本用法实例分析
Jun 28 #Python
python实现搜索指定目录下文件及文件内搜索指定关键词的方法
Jun 28 #Python
分析用Python脚本关闭文件操作的机制
Jun 28 #Python
You might like
php 什么是PEAR?(第二篇)
2009/03/19 PHP
PHP中使用循环实现的金字塔图形
2014/11/08 PHP
laravel学习笔记之模型事件的几种用法示例
2017/08/15 PHP
PHP全局使用Laravel辅助函数dd
2019/12/26 PHP
对联广告js flash激活
2006/10/19 Javascript
表单JS弹出填写提示效果代码
2011/04/16 Javascript
SyntaxHighlighter语法高亮插件使用说明
2011/08/14 Javascript
基于jquery实现后台左侧菜单点击上下滑动显示
2013/04/11 Javascript
浅析JavaScript中的同名标识符优先级
2013/12/06 Javascript
javascript的alert box在java中如何显示多行
2014/05/18 Javascript
js处理php输出时间戳对不上号的解决方法
2014/06/20 Javascript
Node.js中使用计时器定时执行函数详解
2014/08/15 Javascript
Java Mybatis框架入门基础教程
2015/09/21 Javascript
一个字符串中出现次数最多的字符 统计这个次数【实现代码】
2016/04/29 Javascript
bootstrap table小案例
2016/10/21 Javascript
JS实现列表页面隔行变色效果
2017/03/25 Javascript
Bootstrap Table使用整理(三)
2017/06/09 Javascript
表格展示利器 Bootstrap Table实例代码
2017/09/06 Javascript
手把手教你vue-cli单页到多页应用的方法
2018/05/31 Javascript
浅析vue-router jquery和params传参(接收参数)$router $route的区别
2018/08/03 jQuery
详解vue-cli 2.0配置文件(小结)
2019/01/14 Javascript
three.js 如何制作魔方
2020/07/31 Javascript
[00:05]ChinaJoy现场 DOTA2玩家高呼“CN DOTA BEST DOTA”
2019/08/04 DOTA
python练习程序批量修改文件名
2014/01/16 Python
在Linux下调试Python代码的各种方法
2015/04/17 Python
python字符串中匹配数字的正则表达式
2019/07/03 Python
OpenCV模板匹配matchTemplate的实现
2019/10/18 Python
TensorFlow内存管理bfc算法实例
2020/02/03 Python
python爬虫中url管理器去重操作实例
2020/11/30 Python
Python+Xlwings 删除Excel的行和列
2020/12/19 Python
基于 HTML5 Canvas实现 的交互式地铁线路图
2018/03/05 HTML / CSS
HTML5 placeholder(空白提示)属性介绍
2013/08/07 HTML / CSS
世界首屈一指的在线男士内衣权威:HisRoom
2017/08/05 全球购物
英国第一摩托车和摩托车越野配件商店:GhostBikes
2019/03/10 全球购物
师范生求职自荐信
2014/06/14 职场文书
浅谈CSS不规则边框的生成方案
2021/05/25 HTML / CSS