【发布时间】:2020-10-16 22:46:32
【问题描述】:
我需要用正则表达式做这样的事情:
'host': '146.204.224.152',
'user_name': 'feest6811',
'time': '21/Jun/2019:15:45:24 -0700',
'request': 'POST /incentivize HTTP/1.1'
我已经有了四个列表:
host = re.findall("(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})",logdata)
user_name = re.findall("[a-z]{1,100}\d{4}\ ", logdata)
time = re.findall("\d{2}/[A-z]{3}/\d{4}:\d{2}:\d{2}:\d{2} -\d{4}", logdata)
request = re.findall("[A-Z]{1,30}\ /[\w/+]{1,100} [HTTP/]{5}\d{1}\.\d{1}", logdata)
然后尝试用这种方式制作字典:
result = {'host': host, 'user_name': user_name, 'time': time, 'request': request}
但我得到了这个:
'host': ['146.204.224.152',
'197.109.77.178',
'156.127.178.177',
'100.32.205.59',
'168.95.156.240',
'71.172.239.195',
'180.95.121.94',
'144.23.247.108',
'2.179.103.97',
'241.114.184.133',
...]
'user_name': ['feest6811 ',
'kertzmann3129 ',
'okuneva5222 ',
'ortiz8891 ',
'stark2413 ',
'dooley1853 ',
'mohr6893 ',
'auer7552 ',
'lind8584 ',
'tromp8355 ',
'keebler1423 ',
'klein8508 ',
'gusikowski9864 ',
'medhurst2732 ',
'dubuque8645 ',
...]
以此类推其他变量。如何以它为例?
【问题讨论】:
-
您正在使用 re.findall 每个变量,这将获得每个模式的所有结果。您可以创建一个包含 4 个捕获组的单一模式。
标签: python regex list dictionary