V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
chengxiao
V2EX  ›  Python

replace 替换富文本编辑器中的 url 却匹配不到的问题

  •  
  •   chengxiao · 2018-12-06 15:28:22 +08:00 · 1484 次点击
    这是一个创建于 1960 天前的主题,其中的信息可能已经有所发展或是发生改变。

    因为微信的图片有防盗链机制,复制粘贴文章每次图片都要重新传,感觉很麻烦,就想覆写下 django admin 的 save_model 方法,打算把复制来的文章的图片存到本地,如下

        def save_model(self, request, obj, form, change):
    
            b = etree.HTML(obj.content)
            pics = b.xpath("//*/@src")
            for pic in pics:
                c = pic.split("&")[0].split("=")
                if c[1] == "jpeg" or c[1] == "png" or c[1] == "jpg":
                    img_url = pic.split("&")[0]
                    image_name = img_url.replace("https://","").split("/")[2]
    
                    new_name = settings.MEDIA_ROOT+"/"+image_name+"."+c[1]
                    file_name = settings.MEDIA_URL+image_name+"."+c[1]
                    response = requests.get(img_url)
                    image = Image.open(BytesIO(response.content))
                    image.save(new_name)
    
                    obj.content = obj.content.replace(str(pic),str(file_name))
    
                    print(pic)
    
            super(NewsAdmin,self).save_model(request, obj, form, change)
    

    问题就出现在这句

                 obj.content = obj.content.replace(str(pic),str(file_name))
    

    想要把 富文本编辑内的原图片 url 替换成 新生成的 url 原地址也是通过 xpath 取出来的 所以应该是没有问题的 但是 replace 就是一直匹配不到原 url 即使加了去掉换行符,依旧匹配不到

                      obj.content = obj.content.replace('\r','').replace('\n','').replace('\t','')
    

    有点懵了,还请各位指点一下

    1 条回复    2018-12-06 15:54:32 +08:00
    chengxiao
        1
    chengxiao  
    OP
       2018-12-06 15:54:32 +08:00
    找到问题了.....原 url 中有很多&...
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5035 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 03:48 · PVG 11:48 · LAX 20:48 · JFK 23:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.