从字符串中获取列表中的链接

时间:2013-10-19 18:28:29

标签: python regex

我需要一些Python中的正则表达式的帮助。我有这样的字符串:

17:25:31;http://example1.com/viewtopic.php?f=8&t=189;example1.com;127.0.0.1 2013-10-19
17:22:32;http://example2.com;example2.com;127.0.0.1 2013-10-19 
20:18:28;http://example3.com/threads/example-text-in-url.27304/;example3.com;127.0.0.1 2013-10-19

如何获取此列表?

['http://example1.com/viewtopic.php?f=8&t=189', 'http://example2.com', 'http://example3.com/threads/example-text-in-url.27304/']

3 个答案:

答案 0 :(得分:3)

这里不需要正则表达式,使用csv解析器。

假设您的数据位于名为data.csv的文件中:

import csv
reader = csv.reader(open("data.csv"), delimiter=";")
referers = [line[1] for line in reader]

答案 1 :(得分:1)

试试this。也许它符合您的需求:))

正则表达式

/^(.*;)/gm

字符串

17:25:31;http://example1.com/viewtopic.php?f=8&t=189;example1.com;127.0.0.1 2013-10-19
17:22:32;http://example2.com;example2.com;127.0.0.1 2013-10-19 
20:18:28;http://example3.com/threads/example-text-in-url.27304/;example3.com;127.0.0.1 2013-10-19

匹配

1.  [0-66]    `17:25:31;http://example1.com/viewtopic.php?f=8&t=189;example1.com;`
2.  [87-129]  `17:22:32;http://example2.com;example2.com;`
3.  [151-228] `20:18:28;http://example3.com/threads/example-text-in-url.27304/;example3.com

答案 2 :(得分:1)

我将提供正则表达式解决方案,因为这就是你要求的。基本上,您需要做的就是在http://;之间捕获文字。以下是演示:

from re import findall

mystr = """
17:25:31;http://example1.com/viewtopic.php?f=8&t=189;example1.com;127.0.0.1 2013-10-19
17:22:32;http://example2.com;example2.com;127.0.0.1 2013-10-19 
20:18:28;http://example3.com/threads/example-text-in-url.27304/;example3.com;127.0.0.1  2013-10-19
"""

print findall("(http://.+?);", mystr)

输出:

['http://example1.com/viewtopic.php?f=8&t=189', 'http://example2.com', 'http://example3.com/threads/example-text-in-url.27304/']