Я предполагаю, что у вас могут быть пробельные символы между ролью и :
в данных файла. Если вы можете предоставить несколько примеров строк из 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}')