Я пытаюсь добавить строки с указанным символом в пустой список и распечатать его - PullRequest
0 голосов
/ 04 марта 2020

Я пытаюсь добавить строки, обозначенные символом, в пустой список и распечатать его ... но каждый раз, когда я запускаю код, он печатает пустой список "[]" .... но он должен распечатать строки, обозначенные символом внутри списка ..

import os
os.getcwd()
os.chdir("C:\\Users\\Toshiba\\Desktop\\headfirstpython\\chapter3")


man = []
other = []
try:
    data=open('sketch.txt')
    for each_line in data:
        try:
            (role, line_spoken) = each_line.split(':', 1)
            line_spoken = line_spoken.strip()
            if role == 'man':
                man.append(line_spoken)
            elif role == 'other man':
                other.append(line_spoken)
        except ValueError:
            pass
    data.close()    
except IOError:
    print('the datafile is missing')

print(man)
print(other)

1 Ответ

0 голосов
/ 04 марта 2020

Я предполагаю, что у вас могут быть пробельные символы между ролью и : в данных файла. Если вы можете предоставить несколько примеров строк из sketch.txt, мы могли бы знать наверняка. В любом случае, если это так, вы можете просто вызвать .strip() в значении role:

man = []
other = []
try:
    data=open('sketch.txt')
    for each_line in data:
        try:
            (role, line_spoken) = each_line.split(':', 1)
            line_spoken = line_spoken.strip()
            role = role.strip()
            if role == 'man':
                man.append(line_spoken)
            elif role == 'other man':
                other.append(line_spoken)
        except ValueError:
            pass
    data.close()    
except IOError:
    print('the datafile is missing')

print(man)
print(other)

Другим способом реализации этого, который вам не нужен if операторов для каждой роли заключается в использовании словаря для сбора проанализированных данных:

parsed_lines = {}
try:
    data=open('sketch.txt')
    for each_line in data:
        try:
            (role, line_spoken) = each_line.split(':', 1)
            line_spoken = line_spoken.strip()
            role = role.strip()
            parsed_lines[role] = parsed_lines.get(role, [])
            parsed_lines[role].append(line_spoken)            
        except ValueError:
            pass
    data.close()    
except IOError:
    print('the datafile is missing')

print(f'parsed_lines: {parsed_lines}')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...