Was ich versuche, ist ein Programm zu schreiben, das eine .TXT-Datei mit Film Bewertungen öffnet, wo die Bewertung eine Zahl von 0-4 ist gefolgt von einer kurzen Überprüfung des Films . Das Programm fordert den Benutzer dann auf, eine zweite Textdatei mit Wörtern zu öffnen, die mit den Übersichten verglichen werden und einen Zahlenwert basierend auf der Überprüfung erhalten.Iterieren durch eine TXT-Datei in einer ungeraden Art und Weise
Zum Beispiel mit diesen beiden Probe-Bewertungen, wie sie in der TXT-Datei erscheinen würde:
4 Ein Comedy-Drama von fast epischen Ausmaßen in einer aufrichtigen Leistung wurzelt durch den Titelcharakter Midlife-Krise. 2 Massouds Geschichte ist ein Epos, aber auch eine Tragödie, die Aufzeichnung eines hartnäckigen, humanen Kämpfers, der auch der Gefangene -LRB- und schließlich das Opfer -RRB- der Geschichte war.
Also, wenn ich nach dem Wort "epic" suchen würde, würde es die Zählung für dieses Wort um 2 erhöhen (was ich bereits herausgefunden habe), da es zweimal erscheint, und dann die Werte 4 und 2 an a anhängen Liste der Bewertungen für dieses Wort.
Wie hänge ich diese Ints an eine Liste oder ein Wörterbuch an, das zu diesem Wort gehört? Beachten Sie, dass ich für jedes Wort in einer Wortliste eine neue Liste oder einen neuen Dictionary-Schlüssel erstellen muss.
Bitte und danke. Tut mir leid, wenn das schlecht formuliert war, Programmierung ist nicht meine Stärke.
Alle meine Code:
def menu_validate(prompt, min_val, max_val):
""" produces a prompt, gets input, validates the input and returns a value. """
while True:
try:
menu = int(input(prompt))
if menu >= min_val and menu <= max_val:
return menu
break
elif menu.lower == "quit" or menu.lower == "q":
quit()
print("You must enter a number value from {} to {}.".format(min_val, max_val))
except ValueError:
print("You must enter a number value from {} to {}.".format(min_val, max_val))
def open_file(prompt):
""" opens a file """
while True:
try:
file_name = str(input(prompt))
if ".txt" in file_name:
input_file = open(file_name, 'r')
return input_file
else:
input_file = open(file_name+".txt", 'r')
return input_file
except FileNotFoundError:
print("You must enter a valid file name. Make sure the file you would like to open is in this programs root folder.")
def make_list(file):
lst = []
for line in file:
lst2 = line.split(' ')
del lst2[-1]
lst.append(lst2)
return lst
def rating_list(lst):
'''iterates through a list of lists and appends the first value in each list to a second list'''
rating_list = []
for list in lst:
rating_list.append(list[0])
return rating_list
def word_cnt(lst, word : str):
cnt = 0
for list in lst:
for word in list:
cnt += 1
return cnt
def words_list(file):
lst = []
for word in file:
lst.append(word)
return lst
##def sort(words, occurrences, avg_scores, std_dev):
## '''sorts and prints the output'''
## menu = menu_validate("You must choose one of the valid choices of 1, 2, 3, 4 \n Sort Options\n 1. Sort by Avg Ascending\n 2. Sort by Avg Descending\n 3. Sort by Std Deviation Ascending\n 4. Sort by Std Deviation Descending", 1, 4)
## print ("{}{}{}{}\n{}".format("Word", "Occurence", "Avg. Score", "Std. Dev.", "="*51))
## if menu == 1:
## for i in range (len(word_list)):
## print ("{}{}{}{}".format(cnt_list.sorted[i],)
def make_odict(lst1, lst2):
'''makes an ordered dictionary of keys/values from 2 lists of equal length'''
dic = OrderedDict()
for i in range (len(word_list)):
dic[lst2[i]] = lst2[i]
return dic
cnt_list = []
while True:
menu = menu_validate("1. Get sentiment for all words in a file? \nQ. Quit \n", 1, 1)
if menu == True:
ratings_file = open("sample.txt")
ratings_list = make_list(ratings_file)
word_file = open_file("Enter the name of the file with words to score \n")
word_list = words_list(word_file)
for word in word_list:
cnt = word_cnt(ratings_list, word)
cnt_list.append(word_cnt(ratings_list, word))
Sorry, ich weiß, es ist chaotisch und sehr unvollständig.
Ich habe die Zählung Teil bekam herausgefunden. Ich muss in der Lage sein, durch die TXT-Datei zu iterieren, und wenn das Wort, nach dem das Programm sucht, erscheint, sollte es die Ganzzahl vor diesem Wort an eine Liste anhängen. –
Okay, ich habe einen Code hinzugefügt, der helfen kann. Ich denke, Sie müssen anfangen, Ihre Daten formaler zu behandeln. Trennen Sie die Partitur vom Text und halten Sie sie danach in ihren offiziellen Positionen. Du wirst immer wissen, was was ist. –