Мой код работает отлично, пока не встретит второй оператор if. Можете ли вы найти ошибку, которую я не могу найти?
Я попытался заменить оператор else с «continue» на print («no»), просто чтобы посмотреть, что произойдет, и он возвращает «no» длякаждый список диктов, что означает, что мой код не может найти 'length_longest_message' ни в одном из диктов.
Я также добавил print (length_longest_message), и это действительно печатает правильную сумму для любого параметра if-утверждения выше.
def get_longest_update(status_updates, length_type='words'):
'''Takes status_updates, finds the longest update in terms of the given length_type and returns its status message.'''
lengths = []
for dict_row in status_updates:
smessage = dict_row.get('status_message')
if length_type == 'words':
num = nltk.word_tokenize(smessage)
length = len(num)
lengths.append(length)
elif length_type == 'sentences':
num = nltk.sent_tokenize(smessage)
length = len(num)
lengths.append(length)
elif length_type == 'characters':
no_spaces = smessage.replace(' ', '')
length = len(no_spaces)
lengths.append(length)
length_longest_message = max(lengths)
print(length_longest_message)
for dict_row in status_updates:
if length == length_longest_message:
print(smessage)
else:
continue
filename = "../Data/csv_data/trump_facebook.tsv"
status_updates = read_csv(filename, delimiter="\t")
get_longest_update(status_updates, length_type='characters')
Я ожидаю увидеть сообщение с наибольшим количеством слов / предложений / символов, но вместо этого оно ничего не возвращает. Что мне здесь не хватает?
(read_csv - это заранее сделанное мною определение, которое возвращает данные в список диктовок, и оно отлично работает.)