python词典函数,textfile

时间:2013-11-20 21:35:22

标签: python python-3.x dictionary

我想定义一个函数scaryDict(),它接受​​一个参数(textfile)并按字母顺序返回textfile中的单词,基本上生成一个字典但不打印任何一个或两个字母的单词。

这是我到目前为止所做的......虽然不多,但我不知道下一步

def scaryDict(fineName):

    inFile = open(fileName,'r')
    lines = inFile.read()
    line = lines.split()
    myDict = {}
    for word in inFile:
        myDict[words] = []
        #I am not sure what goes between the line above and below
    for x in lines:
        print(word, end='\n')

4 个答案:

答案 0 :(得分:1)

你做得很好,直到line = lines.split()。但是你的for循环必须遍历行数组,而不是inFile

for word in line:
    if len(word) > 2: # Make sure to check the word length!
        myDict[word] = 'something'

我不确定你想要什么字典(也许得到字数?),但是一旦你拥有它,你可以得到你添加到它的单词,

allWords = myDict.keys() # so allWords is now a list of words

然后您可以对allWords进行排序,使其按字母顺序排列。

allWords.sort()

答案 1 :(得分:0)

我会将所有单词存储到一个集合中(以消除重复),然后对该集合进行排序:

#!/usr/bin/python3

def scaryDict(fileName):
    with open(fileName) as inFile:
         return sorted(set(word
                          for line in inFile
                          for word in line.split()
                          if len(word) > 2))

scaryWords = scaryDict('frankenstein.txt')
print ('\n'.join(scaryWords))

答案 2 :(得分:0)

另请注意,从2.5开始,'with'文件包含输入退出方法,这些方法可以防止某些问题(例如该文件永远不会关闭)< / p>

with open(...) as f:
    for line in f:
        <do something with line>

唯一set

set

进行排序

现在你可以把它们放在一起了。

答案 3 :(得分:0)

抱歉,我迟到了3年:)这是我的版本

def scaryDict():
    infile = open('filename', 'r') 
    content = infile.read()
    infile.close()

    table = str.maketrans('.`/()|,\';!:"?=-', 15 * ' ')
    content = content.translate(table)

    words = content.split()
    new_words = list()

    for word in words:
        if len(word) > 2:
            new_words.append(word)

    new_words = list(set(new_words))
    new_words.sort()

    for word in new_words:
        print(word)