我需要在文件中找到一个字符串并将其重新格式化。
查找格式的字符串:
[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>
最好的方法是什么? 我在考虑正则表达式,但我不知道如何实现。有没有简单的方法?
答案 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>'