首頁  >  問答  >  主體

python正则表达式如何在匹配到元素之后进行处理再将处理结果替换原文?

如要处理以下markdown:

# I miss you
my name is Gina,
This is my cloum: [sdf
df](http://zhuanlan.zhihu.com/xxxzzz)
and this is my weibo:[sina blog](https://link.zhihu.com/?target=http%3A//weibo.com/u/2355944%3Fis_hot%3D1)

我写的代码:

from __future__ import unicode_literals, print_function
import re
content='''
# I miss you
my name is Gina,
This is my cloum: [sdf
df](http://zhuanlan.zhihu.com/xxxzzz)
and this is my weibo:[sina blog](https://link.zhihu.com/?target=http%3A//weibo.com/u/2355944%3Fis_hot%3D1)
'''
linklist = re.findall('\[(.+?)\]\((.+?)\)',content,re.S)
for link in linklist:
    link[0].replace("\r\n","")
    link[1].replace("\r\n","")
    link[1].replace('https://ref.zhihu.com/?redrict=','')
print (content)

显而易见的。。以上代码不能运行。。如何得到我想要的:

# I miss you
my name is Gina,
This is my cloum: [sdfdf](http://zhuanlan.zhihu.com/xxxzzz)
and this is my weibo:[sina blog](http://weibo.com/u/2355944?is_hot=1)


高洛峰高洛峰2922 天前567

全部回覆(2)我來回復

  • 欧阳克

    欧阳克2016-11-10 11:16:08

    直接replace就可以了~

    python3

    >>> content='''
    # I miss you
    my name is Gina,
    This is my cloum: [sdfdf](http://zhuanlan.zhihu.com/xxxzzz)
    and this is my weibo:[sina blog](https://link.zhihu.com/?target=http%3A//weibo.com/u/2355944%3Fis_hot%3D1)
    '''
    >>> x=content.replace(r'https://link.zhihu.com/?target=http%3A','http:')
    >>> print(x)
    
    # I miss you
    my name is Gina,
    This is my cloum: [sdfdf](http://zhuanlan.zhihu.com/xxxzzz)
    and this is my weibo:[sina blog](http://weibo.com/u/2355944%3Fis_hot%3D1)


    回覆
    0
  • 三叔

    三叔2016-11-10 11:15:46

    from __future__ import unicode_literals, print_function
    from urllib import unquote
    import os, html2text, re
    
    content='''
    # I miss you
    my name is Gina,
    This is my cloum:[sdf
    df](http://zhuanlan.zhihu.com/xxxzzz)
    and this is my weibo:[sina blog](https://link.zhihu.com/?target=http%3A//weibo.com/u/2355944%3Fis_hot%3D1)
    '''
    
    def ZhiHu_LinkParser(content):
        return re.sub('(\[.+?\])(\(.+?\))', LinkReplace, content,0,re.S)
    
    def LinkReplace(matched):
        return RRN(matched.group(1)) + unquote(RRN(matched.group(2)).replace('https://link.zhihu.com/?target=',''))
    
    def RRN(str):
        return re.sub(r'\r*\n*',"",str)
    
    print (ZhiHu_LinkParser(content))


    回覆
    0
  • 取消回覆