根据文本文件的名称命名列表

时间:2018-05-06 22:10:47

标签: python python-3.x list file for-loop

我正在尝试编写一个函数,该函数从文本文件中获取单词列表,并将文件中的每个单词附加到列表中,其名称与文本文件相同。例如,使用文本文件Verbs.txtNouns.txt会导致Verbs.txt中的所有字词都在verbs列表中,而nouns中的所有名词都会出现在for列表中名单。我试图在def loadAllWords(): fileList = ['Adjectives.txt', 'Adverbs.txt', 'Conjunctions.txt', 'IntransitiveVerbs.txt', 'Leadin.txt', 'Nounmarkers.txt', 'Nouns.txt', 'TransitiveVerbs.txt'] for file in fileList: infile = open(file, 'r') word_type = file[:-4] word_list = [line for line in infile] return word_list 循环中执行此操作:

def loadAllWords():
    infile = open("Adjectives.txt", "r")
    wordList = []
    wordList = [word for word in infile]
    return wordList

当然,我可以轻松地为每个文本文件做一次:

np.random.randint

但是我希望我的功能可以自动完成每个功能。有没有办法做到这一点,或者我应该坚持每个文件的for循环?

2 个答案:

答案 0 :(得分:1)

你应该使用dict之类的(未经测试):

results = {}
for file in file_list:
    infile = open(file, 'r')
    word_type = file[:-4]
    results[word_type] = [line for line in infile]
return results

你也不需要列表理解,你可以这样做:

results[word_type] = list(infile)

答案 1 :(得分:1)

您可以通过操作locals()字典来创建具有自定义名称的新变量,该字典是存储局部变量的地方。但很难想象任何情况下这都是个好主意。我强烈推荐Stephen Roach建议使用字典,这样可以让你更清楚地跟踪列表。但是如果你真的想为每个文件创建局部变量,你可以对他的代码稍作修改:

results = {}
for file in file_list:
    with open(file, 'r') as infile:
        word_type = file[:-4]
        results[word_type] = list(infile)
# store each list in a local variable with that name
locals.update(results)