How can I add to the tally of a chosen phrase?

旧巷老猫 提交于 2019-12-12 04:19:09

问题


So I want to be able to add to the tally of a certain phrase that is contained in a file. However I have no clue on where to start.

Let me explain a little more:

I have a .txt file that is called setPhrases.txt. This file contains this with in it:

What is your name?, 9
What time is dinner?, 8
Thank-You., 9
I have done all my homework., 7
Can you bring me a drink Please?, 6
Hi my name is Dave., 10

I am currently able to take (n) number of the top phrases (So the ones with the highest count) and display them in a box on the screen.

If the user chose the biggest box (In this case the one that says "Hi my name is Dave." in it) then it will be displayed in the top screen/box. As you can see below:

Once the user has decided he/she has chosen the phrase they want they will then press OK which should then recognize the phrase/phrases on screen and should add to the tally in the file by +1.

  • So in this case, the Hi my name is Dave. tally, would go up by one and will change to 11 and will be saved to the file as: Hi my name is Dave., 11, without making any changes to any of the other phrases in that file.

Here is the full code.(Sometimes it is easier to have full code.)

This is the part where it checks to see if OK has been pressed and then proceeds on:

elif textSelected == "OK":
    self.deletePanes()
    self.createPhrases()

This is how I open the file:

def get_n_nouns(self, n):

    #Returns the n most common nouns

    with open("setPhrases.txt") as in_file:
        reader = csv.reader(in_file)
        data = [[row[0], int(row[1])] for row in list(reader)]

    return sorted(data, key=lambda x: -x[1])[:n]

This is where I write in to Pane/Box:

def createPhrases(self):

    print("createPhrases")
    self.deletePanes()

    self.show_keyboard = False
    self.show_words = False
    self.show_phrases = True
    self.show_terminal = True

    words = self.get_n_nouns(2)
    for word, count in words:
        self.addPane("{}: {}".format(word, count), WORDS)
    self.addPane("Boxes", PHRASE)
    self.addPane("Keyboard", PHRASE)
    self.addPane("OK", PHRASE)
    self.drawPanes()

Any help or comments are much appreciated.


回答1:


You should store the data read by you csv reader in a list, so that when modified, you can create a writer and write to the file.

with open("setPhrases.txt") as out_file:
    writer = csv.writer(out_file)
    for row in file_rows:
        spamwriter.writerow(row[0],row[1])

You can find the correct value to increment by searching through the list to find the string that the user clicked, or store the indicies of the displayed strings.



来源:https://stackoverflow.com/questions/21368016/how-can-i-add-to-the-tally-of-a-chosen-phrase

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!