我需要一些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/']
答案 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/']