【问题标题】:Return a list of dict in regex instead of print在正则表达式中返回字典列表而不是打印
【发布时间】:2020-11-23 21:28:18
【问题描述】:

从记录用户访问网页时进行的访问的文件中提取日志数据时,我想返回 dict 格式。 我的模式没有问题,我只想让我的函数返回一个 dict 文件,因为它所做的只是显示项目

def logs():
    with open("assets/logdata.txt", "r") as file:
        logdata = file.read()
        pattern=r'(?P<host>\d+.\d+.\d+.\d+)\s\W\s(?P<user_name>[a-zA-Z]+\d+|-)'
        for item in re.finditer(pattern,logdata): 
            print(item.groupdict())

【问题讨论】:

  • 您的意思是字典列表吗? dicts = [] for item in re.finditer(pattern,logdata): dicts.append(item.groupdict()), ideone.com/Y4EZyI ?

标签: python arrays dictionary


【解决方案1】:

如果你想让你的函数返回一个值,你需要使用return关键字:

def logs():
    with open("assets/logdata.txt", "r") as file:
        logdata = file.read()
        pattern=r'(?P<host>\d+.\d+.\d+.\d+)\s\W\s(?P<user_name>[a-zA-Z]+\d+|-)'
        return [item.groupdict() for item in re.finditer(pattern,logdata)]

【讨论】:

  • 谢谢你这是正确的方法,但我用 a=list() 代替 re.finditer(pattern,logdata) 中的项目:a.append(item.groupdict()) return a跨度>
猜你喜欢
  • 2016-11-03
  • 2017-03-26
  • 1970-01-01
  • 2017-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-06
  • 2020-11-06
相关资源
最近更新 更多