Concordanties met Python

Uw doelen zijn om de gebruiker te vragen om een ​​tekstbestand te analyseren. Je wordt ook voorzien met een bestand met stopwoorden - woorden die worden genegeerd wanneer u het bestand analyseert. Na Maak de concordantie en druk de concordantieresultaten af ​​zoals aangegeven in het voorbeeld uitvoer hieronder. Voor elk woord in de concordantie drukt u af:

  • the word
  • the total number of occurrences
  • for each occurrence:
    • the line number in the file (the first line is line #1)
    • the local context. The local context is the original line with the specified word in all upper case.

Dit is wat ik tot nu toe heb:

import string
file_str = raw_input("What file to analyze:")
file_obj = open(file_str)
for line in file_obj.readlines():
    line = line.strip()
    split_line = line.split()
    for word in split_line:
        word = word.lower()
        word = word.strip(string.punctuation)

Ik weet niet zeker waar ik heen moet!

0
Ik zou beginnen met het analyseren van welke datastructuren je nodig hebt. Hoe bewaar je de woorden? Hoe bewaar je de informatie die je nodig hebt over elk woord? Zoek vervolgens uit hoe u die informatie zult verzamelen.
toegevoegd de auteur kindall, de bron
Er was de afgelopen dagen een soortgelijke vraag over SO. Misschien wilt u een beetje door het archief bladeren.
toegevoegd de auteur Sven Marnach, de bron
Wat probeer je te doen waar je aan vast zit?
toegevoegd de auteur millimoose, de bron
je hebt een syntax probleem: zet alle code onder de vierde regel. Hoe definieer je concordanties?
toegevoegd de auteur Simon, de bron
@Zonder zijn er andere vragen over hetzelfde huiswerk, maar ze kunnen elementen van het antwoord op het OP bederven. Als er iets is, moet Emily proberen het probleem nauwkeuriger te formuleren. Beschouw dit als SO's speciale bonusoefening voor haar :-)
toegevoegd de auteur Simon, de bron
we krijgen txt-bestanden met verhalen zoals itsy bitsy spider en we moesten het hoofdwoord erin tellen en het dan kapitaliseren. Uitvoer: Analyseer welk bestand: itsy_bitsy_spider.txt Concordantie voor bestand itsy_bitsy_spider.txt itsy: Total Count: 2 Regel: 1: de ITSY Bitsy-spin kroop de wateruitloop op Lijn: 4: en de ITSY Bitsy-spin ging opnieuw de uitloop aan! gecrawld: totaal aantal: 1 regel: 1: de Itsy Bitsy-spin getrapt wateruitloop-uitloop: totaal aantal: 2 regel: 1: de Itsy Bitsy-spin kroop het water uit SPOUT-lijn: 4: en de spin van Itsy Bitsy ging omhoog SPOUT opnieuw!
toegevoegd de auteur stackoverflow_user1, de bron

1 antwoord

Welnu, een ding dat je nodig hebt is een teller die je verhoogt op elke iteratie van de buitenste lus, omdat je wordt gevraagd om wat informatie over regelnummers te geven.

Dan is de volgende stap om een ​​woordenboek te hebben. Buiten de lus

words = {}

Elke keer dat u een woord tegenkomt, controleert u of het al een sleutel in het woordenboek is.

if word in words:

Als dit het geval is, werkt u het item bij

    word_info = words[word]
    word_info =//something changed
   //possibly you need this depending on the type of word_info
    words[word] = word_info

Als dit niet het geval is, maakt u een nieuw item

else:
    word_info =//something
    words[word] = word_info

Ik laat het aan jou om erachter te komen wat voor soort waarde word_info zou moeten zijn.

0
toegevoegd
we krijgen txt-bestanden met verhalen zoals itsy bitsy spider en we moesten het hoofdwoord erin tellen en het dan kapitaliseren. Uitvoer: Analyseer welk bestand: itsy_bitsy_spider.txt Concordantie voor bestand itsy_bitsy_spider.txt itsy: Total Count: 2 Regel: 1: de ITSY Bitsy-spin kroop de wateruitloop op Lijn: 4: en de ITSY Bitsy-spin ging opnieuw de uitloop aan! gecrawld: totaal aantal: 1 regel: 1: de Itsy Bitsy-spin getrapt wateruitloop-uitloop: totaal aantal: 2 regel: 1: de Itsy Bitsy-spin kroop het water uit SPOUT-lijn: 4: en de spin van Itsy Bitsy ging omhoog SPOUT opnieuw!
toegevoegd de auteur stackoverflow_user1, de bron