gpt4 book ai didi

python - 在文本 block 中查找并替换 URLS,返回文本 + URLS 列表

转载 作者:行者123 更新时间:2023-11-28 21:28:37 24 4
gpt4 key购买 nike

我试图找到一种方法来获取一段文本,用其他文本替换该文本中的所有 URL,然后返回新的文本 block 和它找到的 URL 列表。像这样的东西:

text = """This is some text www.google.com blah blah http://www.imgur.com/12345.jpg lol"""
text, urls = FindURLs(text, "{{URL}}")

应该给:

text = "This is some text {{URL}} blah blah {{URL}} lol"
urls = ["www.google.com", "http://www.imgur.com/12345.jpg"]

我知道这将涉及一些正则表达式 - 我在这里找到了一些看似不错的 URL 检测正则表达式: http://www.regexguru.com/2008/11/detecting-urls-in-a-block-of-text/

不过,我对正则表达式很不满意,所以我发现用 python 让它做我想做的事情非常棘手。返回 URL 的顺序并不重要。

谢谢:)

最佳答案

正则表达式 here应该足够自由以捕获没有 http 或 www 的 url。

下面是一些执行文本替换并为您提供结果列表的简单 python 代码:

import re

url_regex = re.compile(r"""(?i)\b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>\[\]]+|\(([^\s()<>\[\]]+|(\([^\s()<>\[\]]+\)))*\))+(?:\(([^\s()<>\[\]]+|(\([^\s()<>\[\]]+\)))*\)|[^\s`!(){};:'".,<>?\[\]]))""")

text = "This is some text www.google.com blah blah http://www.imgur.com/12345.jpg lol"
matches = []

def process_match(m):
matches.append(m.group(0))
return '{{URL}}'

new_text = url_regex.sub(process_match, text)

print new_text
print matches

关于python - 在文本 block 中查找并替换 URLS,返回文本 + URLS 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7676255/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com