Почему мой код не может найти мои данные во втором операторе if? - PullRequest
0 голосов
/ 08 октября 2019

Мой код работает отлично, пока не встретит второй оператор 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 - это заранее сделанное мною определение, которое возвращает данные в список диктовок, и оно отлично работает.)

...