【发布时间】:2021-12-12 19:56:38
【问题描述】:
所以,我的任务是将字符串转换为字典(必须使用正则表达式)。我做了一个 findall 来分隔每个元素,但不知道如何将它们放在一起。
我有以下代码:
import re
def edata():
with open("employeedata.txt", "r") as file:
employeedata = file.read()
IP_field = re.findall(r"\d+[.]\d+[.]\d+[.]\d+", employeedata)
username_field = re.findall (r"[a-z]+\d+|- -", employeedata)
date_field = re.findall (r"\d+\/[A-Z][a-z][0-9]+\/\d\d\d\d:\d+:\d+:\d+ -\d+", employeedata)
type_field = re.findall (r'"(.*)?"', employeedata)
Fields = ["IP","username","date","type"]
Fields2 = IP_field, username_field, date_field, type_field
dictionary = dict(zip(Fields,Fields2))
return dictionary
print(edata())
当前输出:
{ "IP": ["190.912.120.151", "190.912.120.151"], "username": ["skynet10001", "skynet10001"] etc }
预期输出:
[{ "IP": "190.912.120.151", "username": "skynet10001" etc },
{ "IP": "190.912.120.151", "username": "skynet10001" etc }]
【问题讨论】:
-
您能否分享您的输入样本和预期输出?
-
这是一行数据:190.912.120.151 - skynet10001 [29/Jan/2012] "Temp" 和所需的输出将是 { "IP": "190.912.120.151", "username": “天网10001”等}
-
对于你给出的那一行数据,你希望你的输出字典是什么样子的?
-
就像我写的那样。 { "IP": "190.912.120.151", "用户名": "skynet10001"} 等
-
糟糕,没有刷新页面。没有看到更新的评论。对于给定的输入,这是我得到的输出。这不是你所期待的吗?
{'IP': ['190.912.120.151'], 'username': ['skynet10001'], 'date': [], 'type': ['Temp']}