将列表从文本文件转换为python列表

时间:2015-02-28 12:04:12

标签: python

我正在教课,我希望他们从文本文件中读取10个单词的列表,然后在3乘3网格中随机显示其中的9个单词。

我的想法如下:

1)使用 readlist = open('N:\ Words.txt','r')

读取文本文件

2)Python将其转换为列表Python使用 import random 随机选择9

3)Python将列表显示在3x3网格中

我尝试过各种各样的事情 - 阅读线,阅读线,附加字符 - 但没有或有限的成功。我错过了一些显而易见的东西,但看不到它。

这会将第一个单词添加到列表中,但如何添加第二个单词:

readlist = open('N:\Words.txt', 'r')
listwords=[]
firstword=readlist.read(5)
listwords.append(firstword)
print (listwords)

3 个答案:

答案 0 :(得分:2)

使用random.sample获取9个随机单词并将返回的列表拆分为三个子列表:

from random import sample
from pprint import pprint as pp

with open("text.txt") as f:
    samp = sample(f.read().split(), 9)
    pp([samp[i:i+3] for i in range(0, len(samp), 3)],width=40)

 [['seven', 'ten', 'four'],
 ['one', 'five', 'nine'],
 ['eight', 'two', 'six']]

的text.txt:

one
two
three
four
five
six
seven
eight
nine
ten

如果每行都有一个单词或单行用单词空格分隔,这将有效。

答案 1 :(得分:0)

open创建一个文件对象。

试试这个:

with open(filename) as f:
    words = f.read().splitlines()

这假设文件每行有一个单词。 f.read()以字符串形式返回整个文件。字符串方法splitlines()在新行上拆分字符串,返回一个字符串数组,并删除换行符。

我在这里使用一个块with open(filename) as f:,以便在您从中读取文件后立即关闭(一旦块完成)。块完成后,words仍在范围内。这种样式只是很好地读取,并且无需手动关闭文件。

答案 2 :(得分:0)

from random import shuffle

words = open('words.txt').read().splitlines()
shuffle(words)

chunks=[words[x:x+3] for x in xrange(0, 9, 3)]
for chunk in chunks:
    print chunk

['d', 'f', 'a']
['i', 'j', 'g']
['e', 'h', 'b']

words.txt包含a到j中每个单独行的所有字母。