从myFile中删除\ n

时间:2014-10-17 07:08:00

标签: python anagram

我正在尝试创建一个列表字典,其中键是字谜,而值(列表)包含该字谜中所有可能的单词。

所以我的dict应该包含这样的东西

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

可能的单词在.txt文件中。每个单词都用换行符分隔。实施例

Sad
Dad
Fruit
Pizza

当我尝试编码时会导致问题。

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)

5 个答案:

答案 0 :(得分:1)

如果&#34; word_list.txt&#34;中的每个字。之后是&#39; \ n&#39;那么你可以使用切片去掉这个词的最后一个字符。

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

但如果&#34; word_list.txt&#34;中的最后一个字不是后跟&#39; \ n&#39;,那么您应该使用rstrip()

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

切片方法效率稍高,但对于这个应用程序,我怀疑你会注意到它们之间的区别,所以你可能只是玩安全和放大器。使用rstrip()

答案 1 :(得分:0)

使用rstrip(),它会移除\n字符。

...
...
keys == word_sorted.rstrip()
...

答案 2 :(得分:0)

您应该尝试在代码中使用.rstrip()函数,它会删除&#34; \ n&#34;

您可以在这里查看.rstrip()

答案 3 :(得分:0)

strip仅从字符串的开头或结尾删除字符。

  • 使用rstrip()删除\ n字符

您也可以使用替换语法,用其他内容替换换行符。

str2 = str.replace(&#34; \ n&#34;,&#34;&#34;)

答案 4 :(得分:0)

所以,我在这里看到一些问题,如何进入字典,我看到没有任务?显然,你只提供了一个片段,所以也许就是其他地方。

当您使用in时,您还会使用循环(效率更高,确实更高)。

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.rstrip())) ##Get the anagram
            if word_sorted in dictionary:
                print(word_sorted)
                dictionary[word_sorted].append(word)
            else:
                # The case where we don't find an anagram in our dict
                dictionary[word_sorted] = [word,]