使用Python在文本中查找超链接(与Twitter相关)

Tim*_*ung 13 python regex

如何解析文本并查找带字符串的所有超链接实例?超链接不是html格式,<a href="http://test.com">test</a>只是http://test.com

其次,我想转换原始字符串并将所有超链接实例替换为可点击的html超链接.

我在这个帖子中找到了一个例子:

将URL转换为C#字符串中的超链接的最简单方法?

但无法在python中重现它:(

max*_*yfc 22

这是一个Python端口,最简单的方法是将URL转换为C#字符串中的超链接?:

import re

myString = "This is my tweet check it out http://tinyurl.com/blah"

r = re.compile(r"(http://[^ ]+)")
print r.sub(r'<a href="\1">\1</a>', myString)
Run Code Online (Sandbox Code Playgroud)

输出:

This is my tweet check it out <a href="http://tinyurl.com/blah">http://tinyurl.com/blah</a>
Run Code Online (Sandbox Code Playgroud)

  • 可以通过添加对https或ftp URL的支持来改进它...此外,我相信该方案(http)是不区分大小写的. (3认同)

dfr*_*kow 10

是2002年以来更为复杂的正则表达式.

  • 这对我来说比接受的答案更有用. (3认同)
  • 我发现它也非常有用,并将其缩小为: `re.compile(r'\b(?:https?|telnet|gopher|file|wais|ftp):[\w/#~:.?+=&amp; %@!\-.:?\\-]+?(?=[.:?\-]*(?:[^\w/#~:.?+=&amp;%@!\-.:?\ -]|$))')` (2认同)
  • 很棒的东西,但是如果URL没有http://前缀会怎样.通常我们不再在电子邮件和社交媒体中指定该部分. (2认同)

Kek*_*koa 5

Django还有一个不仅仅使用正则表达式的解决方案.它是django.utils.html.urlize().我发现这非常有用,特别是如果你碰巧使用django.

您还可以提取要在自己的项目中使用的代码.