从多维数组中的字符串中提取日期

问题描述 投票:0回答:2

我在部分作业中很难过。

[基本上,我有用户输入2Darray中x人的一些数据(姓名,姓氏,身份证,薪水)。ID是由13个数字组成的字符串,它们是ddmmYYYY XXXXXX(x对于该部分任务并不重要)。我需要从列表中的每个数组中提取ID,然后将它们放在单独的数组中(我已经这样做了),并使其成为有效的日期格式(dd.mm.YYYY)。如何以这种方式编辑字符串?

到目前为止是我的代码:

counter = 0
workersList = []
totalSalaries = 0
datesOfBirth = []

#1
workersNumber = int(input("How many? "))

#2
for i in range (workersNumber):
    workersList.append(input("Name, Last name, ID and salary ").split(" "))    
    datesOfBirth.append(workersList[i][2])

#3
    if len(workersList[i][2])==13:
        #print("Good ID number")
        totalSalaries = totalSalaries + float(workersList[i][3])


#4
        avgSalaries = totalSalaries/workersNumber
        counter+=1




#5
print("List of workers: ")
for j in range (workersNumber):
    print(workersList[j])
    print(datesOfBirth)


#6


#7


#8

我知道如何更改整个字符串,但是我不知道用户将输入什么,因此我需要将此字符串用第二,第四和第七个字符后的点号分隔。我该怎么做?我会轻而易举地剩下的。

python arrays string date multidimensional-array
2个回答
1
投票

非常简单,只需替换步骤2中的行

datesOfBirth.append(workersList[i][2])

with

datesOfBirth.append('.'.join([workersList[i][2][0:2],
                              workersList[i][2][2:4],
                              workersList[i][2][4:8]]))

''是您的分隔符,我们正在对元素进行切片

ddmmyyyy[0:2] [2:4] [4:8]


1
投票

切片+格式化是一种非常简单的方法:

worker_data = [
    input("Name, Last name, ID and salary ").split()
    for _ in range(int(input("How many? ")))
]
worker_dobs = [
    f"{id[0:2]}.{id[2:4]}.{id[4:8]}"
    for [_first, _last, id, _salary] in worker_data
]

这是假设数据有效;如果您需要处理无效数据,我建议您使用进行适当验证的函数替换input("Name, Last name, ID and salary ").split(),以便在进入worker_data列表之前将其清除。

一旦有了数据列表,就很容易从中导出其他有用的值;建立清单时,您不需要这样做。例如:

from statistics import mean

average_salary = mean(
    float(salary)
    for [_first, _last, _id, salary] in worker_data
)
number_workers = len(worker_data)

© www.soinside.com 2019 - 2024. All rights reserved.