元组可以从.txt文件实现外部数据吗?

时间:2014-12-22 19:32:23

标签: python

#定义变量' load_words()'。

def load_words():

#打开并分配一个单词'来自外部" txt"的文件文件。

       words_file = open("words.txt", "r")

#Assigns' words'作为外部" txt"中编码字行的压缩函数。文件。

       words = [line.strip() for line in words_file]

您是否可以使用元组执行相同的操作,而无需直接在程序中访问数据?

由于

2 个答案:

答案 0 :(得分:1)

如果我理解正确,是的。

从您的问题来看,听起来您想要读取带有N行的文件,并从该文件生成一个N元组的字符串,其中元组的每个元素都是文件中的一行。

所以,你现在正在做的是读取一个如下所示的文件:

Hello
World
!

并生成字符串列表["Hello", "World", "!"]

我认为你想要的是3元组:("Hello", "World", "!")

您可以执行以下操作:

with open("words.txt") as file:
    t = tuple(line.strip() for line in file)

将导致t包含" words.txt"的内容的N元组。 这里发生的是表达式line.strip() for line in file是一个生成器,被传递给元组构造函数。 生成器是可迭代的,并且当给定可迭代时,元组构造函数迭代迭代的所有元素并将它们填充到元组中。

快速说明:您不应该或不需要这样做。 文件输入超出了您作为程序员的直接控制范围,因此应视为可变长度。 元组对于表示固定长度的构造非常有用,而不是像文件那样可变的东西。 你为什么要这样做?元组为你服务的目的是什么目的呢?

答案 1 :(得分:0)

猜测将它放入元组而不是列表是有意义的,因为一旦它出现,你可能不会对它进行任何更改,并且使用in访问元组会更快。

WORDLIST = "words.txt"

def loadWords():
    with open(WORDLIST, 'r') as inFile:
        wordTuple = tuple(word.lower() for word in inFile.read().split())
    return wordTuple

MYWORDS = loadWords()