Zliczenie ilości występowania danego słowa z pliku .txt

Odpowiedz Nowy wątek
2019-03-04 14:24
0

Witam :)
Rozwijam umiejętności programistyczne w Pythonie i siedzę z problemem od wczoraj, wieczór.

Utworzyłem sobie 7 dokumentów z pewnymi różnymi artykułami z sieci.

Mając 7 słów kluczowych:
"gitar"
"budow"
"podstrunnic"
"muzyk"
"strun"
"korp"
"drewn"

Zczytuję te słowa na tej zasadzie:

# -*- coding: utf-8 -*-

def dokument1():
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art1.txt') as openfile:
        for line in openfile:
            for part11 in line.split():
                if "gitar" in part11:
                    print ("dokument 1: "), part11
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art1.txt') as openfile:
        for line in openfile:
            for part12 in line.split():
                if "budow" in part12:
                    print ("dokument 1: "), part12
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art1.txt') as openfile:
        for line in openfile:
            for part13 in line.split():
                if "podstrunnic" in part13:
                    print ("dokument 1: "), part13
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art1.txt') as openfile:
        for line in openfile:
            for part14 in line.split():
                if "muzyk" in part14:
                    print ("dokument 1: "), part14
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art1.txt') as openfile:
        for line in openfile:
            for part15 in line.split():
                if "strun" in part15:
                    print ("dokument 1: "), part15
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art1.txt') as openfile:
        for line in openfile:
            for part16 in line.split():
                if "korp" in part16:
                    print ("dokument 1: "), part16
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art1.txt') as openfile:
        for line in openfile:
            for part17 in line.split():
                if "drewn" in part17:
                    print ("dokument 1: "), part17
        print ('\n')

def dokument2():
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art2.txt') as openfile:
        for line in openfile:
            for part21 in line.split():
                if "gitar" in part21:
                    print ("dokument 2: "), part21
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art2.txt') as openfile:
        for line in openfile:
            for part22 in line.split():
                if "budow" in part22:
                    print ("dokument 2: "), part22
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art2.txt') as openfile:
        for line in openfile:
            for part23 in line.split():
                if "podstrunnic" in part23:
                    print ("dokument 2: "), part23
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art2.txt') as openfile:
        for line in openfile:
            for part24 in line.split():
                if "muzyk" in part24:
                    print ("dokument 2: "), part24
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art2.txt') as openfile:
        for line in openfile:
            for part25 in line.split():
                if "strun" in part25:
                    print ("dokument 2: "), part25
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art2.txt') as openfile:
        for line in openfile:
            for part26 in line.split():
                if "korp" in part26:
                    print ("dokument 2: "), part26
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art2.txt') as openfile:
        for line in openfile:
            for part27 in line.split():
                if "drewn" in part27:
                    print ("dokument 2: "), part27
        print ('\n')

def dokument3():
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art3.txt') as openfile:
        for line in openfile:
            for part31 in line.split():
                if "gitar" in part31:
                    print ("dokument 3: "), part31
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art3.txt') as openfile:
        for line in openfile:
            for part32 in line.split():
                if "budow" in part32:
                    print ("dokument 3: "), part32
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art3.txt') as openfile:
        for line in openfile:
            for part33 in line.split():
                if "podstrunnic" in part33:
                    print ("dokument 3: "), part33
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art3.txt') as openfile:
        for line in openfile:
            for part34 in line.split():
                if "muzyk" in part34:
                    print ("dokument 3: "), part34
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art3.txt') as openfile:
        for line in openfile:
            for part35 in line.split():
                if "strun" in part35:
                    print ("dokument 3: "), part35
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art3.txt') as openfile:
        for line in openfile:
            for part36 in line.split():
                if "korp" in part36:
                    print ("dokument 3: "), part36
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art3.txt') as openfile:
        for line in openfile:
            for part37 in line.split():
                if "drewn" in part37:
                    print ("dokument 3: "), part37
        print ('\n')

def dokument4():
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art4.txt') as openfile:
        for line in openfile:
            for part41 in line.split():
                if "gitar" in part41:
                    print ("dokument 4: "), part41
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art4.txt') as openfile:
        for line in openfile:
            for part42 in line.split():
                if "budow" in part42:
                    print ("dokument 4: "), part42
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art4.txt') as openfile:
        for line in openfile:
            for part43 in line.split():
                if "podstrunnic" in part43:
                    print ("dokument 4: "), part43
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art4.txt') as openfile:
        for line in openfile:
            for part44 in line.split():
                if "muzyk" in part44:
                    print ("dokument 4: "), part44
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art4.txt') as openfile:
        for line in openfile:
            for part45 in line.split():
                if "strun" in part45:
                    print ("dokument 4: "), part45
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art4.txt') as openfile:
        for line in openfile:
            for part46 in line.split():
                if "korp" in part46:
                    print ("dokument 4: "), part46
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art4.txt') as openfile:
        for line in openfile:
            for part47 in line.split():
                if "drewn" in part47:
                    print ("dokument 4: "), part47
        print ('\n')

def dokument5():
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art5.txt') as openfile:
        for line in openfile:
            for part51 in line.split():
                if "gitar" in part51:
                    print ("dokument 5: "), part51
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art5.txt') as openfile:
        for line in openfile:
            for part52 in line.split():
                if "budow" in part52:
                    print ("dokument 5: "), part52
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art5.txt') as openfile:
        for line in openfile:
            for part53 in line.split():
                if "podstrunnic" in part53:
                    print ("dokument 5: "), part53
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art5.txt') as openfile:
        for line in openfile:
            for part54 in line.split():
                if "muzyk" in part54:
                    print ("dokument 5: "), part54
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art5.txt') as openfile:
        for line in openfile:
            for part55 in line.split():
                if "strun" in part55:
                    print ("dokument 5: "), part55
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art5.txt') as openfile:
        for line in openfile:
            for part56 in line.split():
                if "korp" in part56:
                    print ("dokument 5: "), part56
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art5.txt') as openfile:
        for line in openfile:
            for part57 in line.split():
                if "drewn" in part57:
                    print ("dokument 5: "), part57
        print ('\n')

def dokument6():
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art6.txt') as openfile:
        for line in openfile:
            for part61 in line.split():
                if "gitar" in part61:
                    print ("dokument 6: "), part61
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art6.txt') as openfile:
        for line in openfile:
            for part62 in line.split():
                if "budow" in part62:
                    print ("dokument 6: "), part62
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art6.txt') as openfile:
        for line in openfile:
            for part63 in line.split():
                if "podstrunnic" in part63:
                    print ("dokument 6: "), part63
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art6.txt') as openfile:
        for line in openfile:
            for part64 in line.split():
                if "muzyk" in part64:
                    print ("dokument 6: "), part64
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art6.txt') as openfile:
        for line in openfile:
            for part65 in line.split():
                if "strun" in part65:
                    print ("dokument 6: "), part65
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art6.txt') as openfile:
        for line in openfile:
            for part66 in line.split():
                if "korp" in part66:
                    print ("dokument 6: "), part66
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art6.txt') as openfile:
        for line in openfile:
            for part67 in line.split():
                if "drewn" in part67:
                    print ("dokument 6: "), part67
        print ('\n')

def dokument7():
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art7.txt') as openfile:
        for line in openfile:
            for part71 in line.split():
                if "gitar" in part71:
                    print ("dokument 7: "), part71
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art7.txt') as openfile:
        for line in openfile:
            for part72 in line.split():
                if "budow" in part72:
                    print ("dokument 7: "), part72
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art7.txt') as openfile:
        for line in openfile:
            for part73 in line.split():
                if "podstrunnic" in part73:
                    print ("dokument 7: "), part73
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art7.txt') as openfile:
        for line in openfile:
            for part74 in line.split():
                if "muzyk" in part74:
                    print ("dokument 7: "), part74
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art7.txt') as openfile:
        for line in openfile:
            for part75 in line.split():
                if "strun" in part75:
                    print ("dokument 7: "), part75
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art7.txt') as openfile:
        for line in openfile:
            for part76 in line.split():
                if "korp" in part76:
                    print ("dokument 7: "), part76
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art7.txt') as openfile:
        for line in openfile:
            for part77 in line.split():
                if "drewn" in part77:
                    print ("dokument 7: "), part77
        print ('\n')
        print ('\n')
        print ('\n')

def menu():

    print '\n', ("a) Wczytanie dokumentu.")
    print ("b) Zliczenie występowania termów dla wyznaczonego dokumentu."), '\n'

    loop = True
    while loop:

        action = raw_input('Wybierz operację: \n')

        if action == 'a':
            doc = input('Wybrałeś dokument: \n')

            if doc == 1:
                print ("Wybrałeś dokument nr 1: "), '\n', dokument1()
            if doc == 2:
                print ("Wybrałeś dokument nr 2: "), '\n', dokument2()
            if doc == 3:
                print ("Wybrałeś dokument nr 3: "), '\n', dokument3()
            if doc == 4:
                print ("Wybrałeś dokument nr 4: "), '\n', dokument4()
            if doc == 5:
                print ("Wybrałeś dokument nr 5: "), '\n', dokument5()
            if doc == 6:
                print ("Wybrałeś dokument nr 6: "), '\n', dokument6()
            if doc == 7:
                print ("Wybrałeś dokument nr 7: "), '\n', dokument7()

        if action == 'b':
            print ("Wybierz dokument do zliczenia ilości termów: ")
            count = input('Wybrałeś dokument: \n')

            if count == 1:
                print ("Wybrałeś dokument nr 1: "), '\n', dokument1()
            if count == 2:
                print ("Wybrałeś dokument nr 2: "), '\n', dokument2()
            if count == 3:
                print ("Wybrałeś dokument nr 3: "), '\n', dokument3()
            if count == 4:
                print ("Wybrałeś dokument nr 4: "), '\n', dokument4()
            if count == 5:
                print ("Wybrałeś dokument nr 5: "), '\n', dokument5()
            if count == 6:
                print ("Wybrałeś dokument nr 6: "), '\n', dokument6()
            if count == 7:
                print ("Wybrałeś dokument nr 7: "), '\n', dokument7()

# dokument1()
# dokument2()
# dokument3()
# dokument4()
# dokument5()
# dokument6()
# dokument7()
menu()
def menu():

    print '\n', ("a) Wczytanie dokumentu.")
    print ("b) Zliczenie występowania termów dla wyznaczonego dokumentu."), '\n'

        if action == 'a':
            doc = input('Wybrałeś dokument: \n')

        if action == 'b':
            print ("Wybierz dokument do zliczenia ilości termów: ")
            count = input('Wybrałeś dokument: \n')

Może nie jest to najwydajniejszy kod, ale próbuję, jak mogę.
Chciałbym, aby pod operacją b) program zliczał ilość występowania tych samych słów\termów w jednym dokumencie, przykład:

Dokument1: gitar [12]
Dokument1: budow [3]
Dokument1: podstrunnic [6]
Dokument1: muzyk [8]
Dokument1: strun [0]
Dokument1: korp [1]
Dokument1: drewn [4]

Zastanawiam się nad zastosowaniem dicta. Próbowałem splitem to łączyć
A gdyby tak najpierw przerobić te słowa na listę?
Tylko jak to ugryźć.

Macie jakieś pomysły?

Co ja paczę? :D - Mózg 2019-03-04 14:38
@Mózg: No ja chciałem dodać odpowiedź, ale duracelle mi się wyczerpały, gdy spojrzałem na listing... - Pyxis 2019-03-04 14:39
Kolega jest na 7 semstrze studiow? - Akihito 2019-03-04 15:08
@Akihito: a skąd masz informacje o studiowaniu? Poza tym może studiuje np. weterynarię ;) - cerrato 2019-03-04 15:13
D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art7.txt - sciezka do pliku duzo mowi, dlatego pytam czy to jego zadanie na VII semestrze studiow czy sciezka rnadomowa bo kod jest pisany przez jakiegos swiezaka a VII semestr studiow mi nie pasuje - Akihito 2019-03-04 15:15
No ja w ogóle w szczegóły kodu nie zaglądałem, bo to takie totalne Ctrl+C/Ctrl+V. Poza tym powtórzę - może kolega studiuje coś totalnie niezwiązanego z programowaniem, a w ramach jakichś zajęć pobocznych/kółka informatycznego sobie coś pisze. - cerrato 2019-03-04 15:17

Pozostało 580 znaków

2019-03-09 09:52
1
Bartek Pieczka skomentował(a):

Chcę oddzielić wartości, żeby łatwiej to można było złożyć w całość.

Łatwiej co zrobić? Gościu, wpierdzielasz miliard jakichś ifów, miliard osobnych zmiennych zliczających i cholera wie co jeszcze i uważasz, że to jest łatwiejsze niż przejście po liście i napisanie jednego ifa, który będzie zliczał wszystko naraz?

Masz może kuchenkę albo piekarnik w domu? Z pokrętłami do regulacji mocy kuchenki / ilości gazu / temperatury piekarnika / trybu pracy? Weź wywal te pokrętła i w miejsce każdego wstaw sobie 15 przełączników, jeden obok drugiego, opisane drobnym druczkiem (bo mało miejsca). Skoro kaskada ifów jest łatwiejsza, to obsługa piekarnika przez przełączanie 30 przełączników będzie na pewno dużo łatwiejsza niż pokrętło.

I naprawdę, przestań wrzucać te zrzuty ekranu z IDE, bo niczego to nie wnosi, źle się to czyta, nawet nie można z nich nic skopiować, tylko w razie czego trzeba przepisywać (no chyba, że uważasz, że przepisywanie jest łatwiejsze niż skopiowanie?). Chcesz nam pokazać jaki błąd rzucił program po uruchomieniu? Wspaniale, to też możesz skopiować z konsoli i wkleić do posta, bez śmiecenia pierdylionem zrzutów ekranu.

Sorry, ale naprawdę przeginasz. Nikt nie będzie za Ciebie myśleć, jak nawet nie próbujesz zrozumieć, co robisz i z czego mogą wynikać Twoje problemy, to donikąd nie zajdziesz - ja rozumiem Twoją strategię, przecież ewolucja też tak działa, że zachodzą jakieś losowe zmiany i w końcu któraś okaże się bardziej pożyteczna niż szkodliwa, przetrwa i stanie się podstawą kolejnych zmian. Tylko wiesz, ewolucja potrzebowała blisko 3mld lat by wyprodukować pierwsze organizmy wielokomórkowe i kolejne bodajże 700mln, by wyprodukować Homo sapiens. Masz 4mld lat na naukę programowania? Wspaniale, rób tak dalej. Nie masz? No to naucz się myśleć, zanim zrobisz.


Prosząc o pomoc w wiadomości prywatnej odbierasz sobie szansę na otrzymanie pomocy od kogoś bardziej kompetentnego :)
Rozumiem Twój tok rozumowania, ale bez przeginy :) to tylko 8 ifów, easy. Co do IDE - no chciałem tylko zobrazować, jak to wygląda; a kod? Przecież wstawiłem, jest możliwość skopiowania... Gdyby nie było problemu, nie umieszczałbym go tutaj. Robiłem już kilka takich ćwiczeń i na 13, z dwoma miałem problem. Widzę, że poczułeś się urażony, przepraszam. - Bartek Pieczka 2019-03-09 10:12
To nie jest "tylko 8 ifów". To jest pakowanie się w złe nawyki. Znam ludzi, którzy potrafili strzelić taką ifozę np. dla całego alfabetu łacińskiego. Na szczęście w porę z tego wyrośli. - superdurszlak 2019-03-09 10:26
8 ifów to tragedia, jeśli starczy jeden - enedil 2019-03-09 19:06

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0