【发布时间】:2020-11-02 03:35:13
【问题描述】:
我有这个带有一些日志的 .txt* 我正在尝试将值“-”分配给“user_name”,以防文件没有用户名。但是,在这些情况下,输出字典会显示这个“user_name”:“”。你知道我做错了什么吗?我也试过 item.groupdict["user_name"] = "-",但显然这不是问题的根源......
import re
with open("logdata.txt", "r") as file:
logdata = file.read()
logs = []
pattern = """
(?P<host>[\d.]+)[-\s]+
(?P<user_name>\w*)\s+
\[(?P<time>[^][]+)\]\s+
"(?P<request>[^"]+)"
"""
for item in re.finditer(pattern,logdata,re.VERBOSE):
**if item.groupdict("user_name") == None:
item["user_name"] = '-'**
logs.append(item.groupdict())
这是一个txt示例:
71.172.239.195 - dooley1853 [21/Jun/2019:15:45:32 -0700] "PUT /cutting-edge HTTP/2.0" 406 24498
180.95.121.94 - mohr6893 [21/Jun/2019:15:45:34 -0700] "PATCH /extensible/reinvent HTTP/1.1" 201 27330
144.23.247.108 - auer7552 [21/Jun/2019:15:45:35 -0700] "POST /extensible/infrastructures/one-to-one/enterprise HTTP/1.1" 100 22921
【问题讨论】:
-
我怀疑重新匹配对象实现了任何方式来修改匹配结果。您需要将 groupdict 检索到一个变量中,修改 那个 dict,然后将其附加到您的列表中。
标签: python regex dictionary