Я пытаюсь распечатать все задачи пользователей, вошедших в систему, из файла (tasks.txt). Это то, что я до сих пор, но это только распечатывает одну задачу - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь распечатать все задачи пользователей, вошедших в систему, из файла (tasks.txt). Это то, что я до сих пор, но это только распечатывает одну задачу.

elif choice == "vm":

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

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

tasks.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    

Ответы [ 2 ]

0 голосов
/ 16 апреля 2020

Как и 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:

Добавлено try и except для учета неверных строк

Обновление 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
0 голосов
/ 16 апреля 2020

Поскольку вы работаете со значениями, разделенными запятыми, вы можете прочитать файл tasks.txt в виде файла CSV. При этом предполагается, что имена пользователей всегда находятся в 1-м столбце, а задачи - в 3-м столбце (Filing, Fini sh Project и т. Д. c.)

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().

...