Search code examples
pythonanagram

Removing \n from myFile


I am trying to create a dictionary of list that the key is the anagrams and the value(list) contains all the possible words out of that anagrams.

So my dict should contain something like this

{'aaelnprt': ['parental', 'paternal', 'prenatal'], ailrv': ['rival']} 

The possible words are inside a .txt file. Where every word is separated by a newline. Example

Sad
Dad
Fruit
Pizza

Which leads to a problem when I try to code it.

with open ("word_list.txt") as myFile:
    for word in myFile:
        if word[0] == "v": ##Interested in only word starting with "v"
            word_sorted =  ''.join(sorted(word)) ##Get the anagram
            for keys in list(dictonary.keys()):
                if keys == word_sorted: ##Heres the problem, it doesn't get inside here as theres extra characters in <word_sorted> possible "\n" due to the linebreak of myfi
                    print(word_sorted)
                    dictonary[word_sorted].append(word)

Solution

  • If every word in "word_list.txt" is followed by '\n' then you can just use slicing to get rid of the last char of the word.

    word_sorted = ''.join(sorted(word[:-1])) 
    

    But if the last word in "word_list.txt" isn't followed by '\n', then you should use rstrip().

    word_sorted = ''.join(sorted(word.rstrip())) 
    

    The slice method is slightly more efficient, but for this application I doubt you'll notice the difference, so you might as well just play safe & use rstrip().