Tarkoituksena on hakea tekstitiedostosta (words.txt) kaikki tietyn ehdon täyttävät sanat (muuttuja regex).
Kielenä python, jota en hirveästi ole koodaillut. Homma toimi hyvin siihen asti kunnes tein siitä oman funktion ( getPossibleWords(regex) )
koodi menee jumiin tai/ja ei palauta mitään ( "[]" ). kiitos
regex = str(input("regex: ")) print(regex) foundWords = getPossibleWords(regex) # eri tapoja tulostaa taulukko, jos vika olisikin siinä ... print(str(foundWords))
def getPossibleWords(regex): file = open(sourceFile, 'r', encoding='utf-8') fileContent = file.read() file.close() matches = re.findall(regex, fileContent) return matches
Olisi vähintäänkin järkevää näyttää myös se aiempi koodi, joka toimi.
Ainakaan vika ei ole funktiossasi:
import re def getPossibleWords(regex): file = open(sourceFile, 'r', encoding='utf-8') fileContent = file.read() file.close() matches = re.findall(regex, fileContent) return matches sourceFile = input("file: ") regex = input("regex: ") print(getPossibleWords(regex))
file: kotus_sanat.txt regex: \baa..o\b ['aalto', 'aatto']
Lisähuomio: str on koodissasi turha.
aiempi koodi on jo tuossa. Erona vain se että regex tulee funktiolle parametrinä.
regex = input("regex: ") file = open(sourceFile, 'r', encoding='utf-8') fileContent = file.read() file.close() matches = re.findall(regex, fileContent) print(str(matches)) # tämä lisäyksenä tosin
hakee esim.
Regex >> \bohjel.{1,3} ['ohjelma', 'ohjelma', 'ohjelma', 'ohjelmai', 'ohjelmaj', 'ohjelmak', 'ohjelmak', 'ohjelmal', 'ohjelmal', 'ohjelmal', 'ohjelmal', 'ohjelmam', 'ohjelman', 'ohjelman', 'ohjelman', 'ohjelman', 'ohjelman', 'ohjelman', 'ohjelman', 'ohjelmap', 'ohjelmas', 'ohjelmat', 'ohjelmat', 'ohjelmat', 'ohjelmav', 'ohjelmis', 'ohjelmoi', 'ohjelmoi', 'ohjelmoi', 'ohjelmoi', 'ohjelma', 'ohjelma', 'ohjelma', 'ohjelma', 'ohjelma', 'ohjelma']
p99o kirjoitti:
Erona vain se että regex tulee funktiolle parametrinä.
Ihan varmasti koodissa on muutakin eroa, jos se muka ei toimi. Kuten yllä näytin, antamasi koodi toimii, joten etsi vikaa muualta.
Aihe on jo aika vanha, joten et voi enää vastata siihen.