Почему мой код не выполняет цикл for в моем коде? - PullRequest
0 голосов
/ 02 октября 2019

Я создал функцию и цикл for, где цикл for не связан с этой функцией. Когда код выполняется, цикл for будет пропущен. Я хочу знать, почему это происходит.

У меня есть текстовый файл TSV с заголовками: «положительное количество слов», «отрицательное количество слов», «общее количество слов» и «текст». Функция создается для определения среднего количества слов, а цикл for используется для категоризации каждого предложения и добавления «текста» в массив, чтобы его имя соответствовало результату категоризации. Код работает так, как задумано, когда я не вызывал функцию, а вместо этого интегрирую вычисления в цикл for. Однако мне нужно знать, почему это происходит, поскольку я не могу обойти каждую проблему, подобную этой.

def get_sentiment_category(p_value, n_value): #has more classification, minimalize
        if p_value is not 0 and n_value is 0:
            return("positive")
        elif p_value is 0 and n_value is not 0:
            return("negative")
def get_average_word(data):
    total_word = 0
    total_sentence = 0
    for line in data:
        total_sentence += 1
        total_word = total_word + int(line[2])
    return (total_word/total_sentence)
list_of_category = ["positive","negative"] ## Declare category name
positive = []
negative = []

with open(file, "r", encoding="utf-8-sig") as source:
    source_read = csv.reader(source, delimiter='\t') #reading tsv
    next(source_read, None)#skip header 

    average_word = get_average_word(source_read) ## getting average word
    print("get avg")

    for line in source_read:
        print("1212")
        p_value = int(line[0]) ## positive value
        n_value = int(line[1]) ## negative value
        category = get_sentiment_category(p_value,n_value)
        globals()[category].append(line[3]) ## if category == "positive", line[3](text) will be append to array with name "positive"

print(average_word)
for item in list_of_category:
    print(globals()[item]) 
    print("-----------")
Sample data:
positive'''negative''' word_count''' text
0''''''''''1'''''''''''3'''''''''''''I am sad
1''''''''''0'''''''''''4'''''''''''''I am very happy

## I do not know to to display TSV, forgive me

Вывод должен быть:

get avg
1212
1212
3.5
["I am sad"]
-----------
["I am very happy"]
-----------

Вместо:

get avg
3.5
[]
-----------
[]
-----------
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...