-1

我正在尝试从文件(tasks.txt)中打印所有登录用户的任务。这是我到目前为止所拥有的,但它只打印出一项任务。

elif choice == "vm":

         for task in taskList:
             taskItems = task.split(":")

             if loginUsername.strip() == taskItems[0].strip():
                 print(taskItems)

任务.txt:

Shaun, Admin, Filing, 2020/4/09, 15/4/2020, No
Ashraf, Operations, Quote new air-condition, 2020/3/09, 10/4/2020, No
Clayton, IT, Finish Project, 2020/4/03, 30/4/2020, No
Shaun, Admin, Emails, 2020/4/07, 12/4/2020, No
Shaun, Admin, Data Captures, 2020/4/09, 13/4/2020, No
Roland, Marketing, Marketing Update, 2020/4/01, 10/4/2020, No
Therlow, Sales, Print New Leads, 2020/4/02, 4/4/2020, No
Shaun, Admin, Reply to Lerintha via email, 16/4/2020, 2020/04/15, No
Toni, Deliveries, Deliver all stock, 17/4/2020, 2020/04/16, No    
4

2 回答 2

0

由于您使用的是逗号分隔值,因此您可以将 tasks.txt 读取为 CSV 文件。这假设用户名始终位于第一列,任务位于第三列(归档、完成项目等)

import csv
with open('tasks.txt') as csv_file:
    csv_reader = csv.reader(csv_file)
    for row in csv_reader:
        if loginUsername.strip() == row[0].strip():
            print(row[2])

这种方法消除了对 的显式调用,split(',')因为逗号是csv_reader().

于 2020-04-16T09:33:09.917 回答
0

像 SteveK 一样,我假设您的用户名在第一列,任务在第三列:

with open ('tasks.txt', 'r') as f:
    lines = f.readlines()

userTasks = dict()
for line in lines:
    try:
        user = line.split(',')[0].strip()
        task = line.split(',')[2].strip()
        userTasks.setdefault(user, []).append(task)
    except IndexError:
        continue

for user in userTasks:
    print('{}: {}'.format(user, userTasks[user]))

产生这个输出:

Shaun: ['Filing', 'Emails', 'Data Captures', 'Reply to Lerintha via email']
Ashraf: ['Quote new air-condition']
Clayton: ['Finish Project']
Roland: ['Marketing Update']
Therlow: ['Print New Leads']
Toni: ['Deliver all stock']

更新1:

添加tryexcept考虑无效行

更新 2:

OP 正在寻找 tasks.txt 中的完整行:

with open ('tasks.txt', 'r') as f:
    lines = f.readlines()

loginUsername = 'Shaun'
userTasks = [line for line in lines if line.lstrip().startswith(loginUsername)]
print(''.join(userTasks))

产生这个输出:

Shaun, Admin, Filing, 2020/4/09, 15/4/2020, No
Shaun, Admin, Emails, 2020/4/07, 12/4/2020, No
Shaun, Admin, Data Captures, 2020/4/09, 13/4/2020, No
Shaun, Admin, Reply to Lerintha via email, 16/4/2020, 2020/04/15, No
于 2020-04-16T09:39:04.157 回答