Я создал функцию и цикл 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
[]
-----------
[]
-----------