查找和替换字符之间的字符串

时间:2018-12-15 13:09:50

标签: python python-3.x

我需要在文件中找到一个字符串并将其重新格式化。

查找格式的字符串:

[title](link)

示例:

[template application](https://stackoverflow.com/sample/base-app)

我想将其更改为HTML链接:

<a href="link">title</a> 

示例:

<a href="https://stackoverflow.com/sample/base-app">template application</a> 

最好的方法是什么? 我在考虑正则表达式,但我不知道如何实现。有没有简单的方法?

2 个答案:

答案 0 :(得分:0)

您可以利用sub函数接收另一个函数作为替换参数这一事实:

import re

line = '[template application](https://stackoverflow.com/sample/base-app)'


def repl(match):
    return '<a href="{}">{}</a>'.format(match.group(2), match.group(1))


result = re.sub('\[(.+?)\]\((https?.+?)\)', repl, line)

print(result)

输出

<a href="https://stackoverflow.com/sample/base-app">template application</a>

模式'\[(.+?)\]\((https?.+?)\)'捕获了方括号之间的所有内容,后接诸如(以http开头)之类的链接,请注意,您必须转义方括号和括号,因为它们在正则表达式中具有特殊含义。

或者按照@JonClements的建议,您可以使用:

re.sub('\[(.+?)\]\((https?.+?)\)', r'<a href="\2">\1</a>', line)

代替repl函数。

答案 1 :(得分:0)

如丹尼尔所说,您可以使用re来达到所需的结果,但是,如果您不想使用正则表达式,可以使用str.split

line = '[template application](https://stackoverflow.com/sample/base-app)'
link = line.split('(')[1][:-1]
title = line.split(']')[0][1:]

result = '<a href="{}">{}</a>'.format(link, title)

如果您使用的是Python 3.6或更高版本:

result = f'<a href="{link}">{title}</a>'