Sida 1 av 1

Kmom05 7 mest förekommande ord

InläggPostat: 02 nov 2016, 13:57
av elinhb16
Hej!

Jag har fått komplettering på Kmom05 del 5 i marvin med kommentaren
"'dinah' är ett ord som borde ses som ett felstavat ord eftersom att det inte finns i 'words.txt' och borde varit borttaget vid uppgift 5."

Problemet är att i min fil 'words.txt' så finns 'Dinah' med. Är problemet att jag har .lower() i koden? Är det meningen att man skall skilja på ord som böjar på stor och liten bokstav?

Kod: Markera allt
import string
punkter = str.maketrans({key:None for key in string.punctuation})

def alice_main():
    """
    1: open file or default file
    """
    filename = input("Enter the file name: ")
    try:
        if filename == (""):
            file = open('alice-ch1.txt', 'r')
        else:
            file = open(filename)
        return file
    except Exception:
        print("Error, try again.")


def common_exclude():
    """
    4: display 7 most frequent words, exclude common-words.txt
    """
    file = alice_main()
    alicewords = dict()
    for line in file:
        words = line.translate(punkter).lower().split()
        for word in words:
            if word not in alicewords:
                alicewords[word] = 1
            else:
                alicewords[word] += 1
   
    # exclude common-words
    commonfile = open('common-words.txt')
    commonwords = dict()
    for line2 in commonfile:
        words2 = line2.translate(punkter).lower().split()
        for word2 in words2:
            if word2 not in commonwords:
                commonwords[word2] = 1
            else:
                commonwords[word2] += 1

    # sort words by value
    lst = list()
    for key, val in list(alicewords.items()):
        if not key in commonwords:
            lst.append((val, key))

    lst.sort(reverse=True)

    for key, val in lst[:7]:
        print(key, val)

   
def misspelled_exclude():
    """
    #5: display 7 most frequent words, exclude common words(common-words)
    and exclude misspelled words(words)
    """

    file = alice_main()
    alicewords = dict()
    for line in file:
        words = line.translate(punkter).lower().split()
        for word in words:
            if word not in alicewords:
                alicewords[word] = 1
            else:
                alicewords[word] += 1

    # exclude common-words
    commonfile = open('common-words.txt')
    commonwords = dict()
    for line2 in commonfile:
        words2 = line2.translate(punkter).lower().split()
        for word2 in words2:
            if word2 not in commonwords:
                commonwords[word2] = 1
            else:
                commonwords[word2] += 1

    # only include correct spelled
    spellfile = open('words.txt')
    spellwords = dict()
    for line3 in spellfile:
        words3 = line3.translate(punkter).lower().split()
        for word3 in words3:
            if word3 not in spellwords:
                spellwords[word3] = 1
            else:
                spellwords[word3] += 1


    # sort words by value
    lst = list()
    for key, val in list(alicewords.items()):
        if not key in commonwords:
            if key in spellwords:
                lst.append((val, key))

    lst.sort(reverse=True)

    for key, val in lst[:7]:
        print(key, val)

Re: Kmom05 7 mest förekommande ord

InläggPostat: 02 nov 2016, 14:10
av reureya
"Dinah" är ju ett rättstavat namn och finns med i min words.txt också... Om jag kör alice-ch1.txt så får jag med "Dinah" i både uppgift 4 och uppgift 5. Jag använder också lower() och fick ingen komplettering. :/

Konstigt!

Re: Kmom05 7 mest förekommande ord

InläggPostat: 02 nov 2016, 22:25
av Palkess
Jag dubbelkollade det igen och såg att jag hade fel fil uppe när jag rättade ditt moment.
Måste varit pga min låga halt kaffe imorse :)

Har återkopplat på its på ditt moment!

// Jonas

Re: Kmom05 7 mest förekommande ord

InläggPostat: 03 nov 2016, 14:18
av elinhb16
Tack för svaret!

Blev väldigt osäker när jag inte förstod vad som var fel :)