0

我正在从一个 txt 文件中抓取,并添加到一个数组中。我写了一个 for 循环 1. 从 txt 文件中获取一个条目, 2. 检查它是否存在于结果数组中,如果不存在 3. 将其添加到结果数组中。

data.txt 看起来像这样:

0100002159900000000000       Sales              Deval Patrick               Seattle
0100003159900000000000       Sales              Bernie Sanders              Chicago
0100004159900000000000       Sales              Joseph R. Biden             Dallas
0100005159900000000000       Marketing          Michael R. Bloomberg        Boston
...etc.

结果数组应如下所示:

employees = [
        {
            "dept": "Sales",
            "remote": False,
            "management": [
                {
                    "manager": "Smith",
                    "level": "county",
                    "people": [
                         {
                              "first_name": "Deval",
                              "middle_name": "",
                              "last_name": "Patrick",
                              "city": Seattle,
                         },
                         {
                              "first_name": "Bernie",
                              "middle_name": "",
                              "last_name": "Sanders",
                              "city": Chicago,
                         },
                         {
                              "first_name": "Joseph",
                              "middle_name": "R",
                              "last_name": "Biden",
                              "city": Dallas,
                         },
                    ]
                },
                
            ]
        },
        {
            "dept": "Marketing",
            "remote": True,
            "management": [
                {
                    "manager": "Jones",
                    "level": "county",
                    "people": [
                         {
                              "first_name": "Michael",
                              "middle_name": "R",
                              "last_name": "Bloomberg",
                              "city": Boston,
                         }
                    ]
                },
                ...etc.
                
            ]
        }
    ]

我正在为“如果它不在数组中,请添加它”的 if 逻辑而苦苦挣扎。这是我现在拥有的:

employees = []
with open('data.txt','r') as f:
    for row in data:
        # splits row by an instance of two or more characters of white space
        # https://stackoverflow.com/questions/48917121/split-on-more-than-one-space
        row = re.split(r"\s{2,}", row)
        empl_id = row[0]
        empl_name = row[2]
        empl_dept = row[1]

        for item in employees:
            current_dept = item['dept']
            if empl_dept != current_dept:
                    
                # create/append dept object:
                dept_obj = {
                     "dept": "Sales",
                     "remote": False,
                     "management": [
                          {
                               "manager": "Smith",
                               "level": "county",
                               "people": []
                          }
                      ]
                 }
                 employees.append(dept_obj)

            else: # if dept_object does exist
                #add people object:
                employees[current_dept]['management']['people'].append({
                     "empl_name": empl_name,
                     "empl_id": empl_id
                })

我知道这个逻辑,可能有些语法是错误的。我当前的主要问题是它正在为员工数组中的每个项目添加一个dept_obj,它显然越来越大。我确信有更好的方法来写这个,我只是不知道它是什么。任何帮助表示赞赏。

4

0 回答 0