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

将列表从文本文件转换为python列表,python,Python,我在教一门课,我想让他们从一个文本文件中阅读10个单词的列表,然后在3×3的网格中随机显示其中的9个单词 我的想法如下: 1) 使用readlist=open读取文本文件('N:\Words.txt','r') 2) Python将其转换为一个列表,Python使用import random随机选择9 3) Python以3x3的网格显示列表 我尝试过各种方法——读线、读线、附加字符——但没有成功或成功有限。我错过了一些明显的东西,但看不见 这会将第一个单词添加到列表中,但如何添加第二个单词:

我在教一门课,我想让他们从一个文本文件中阅读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)

open
创建文件对象

试试这个:

with open(filename) as f:
    words = f.read().splitlines()
这是假设文件每行有一个字
f.read()
将整个文件作为字符串返回。string方法
splitlines()
在换行符上拆分字符串,返回一个字符串数组,并去掉换行符


我在这里使用了一个open(filename)为f:的块
,这样在读取文件后(一旦块完成),文件将立即关闭<代码>字
在块完成后仍在范围内。此样式的可读性很好,无需手动关闭文件。

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

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
如果每行有一个单词,或者每行有一个单词,单词之间用空格隔开,那么这就可以了

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的所有字母。

您能再显示一点代码吗,因为这应该是正确的
readlines
应该读取列表中的整个文件,然后您可以转到
查找文件中的行。readlines():轻松打印(行)
。当然,在您的情况下,将其附加到列表中进行处理可能是更好的选择。请看:
如果您想读取列表中文件的所有行,也可以使用list(f)或f.readlines()。
显示您的尝试和示例。每行有一个单词吗?谢谢@Michael9,我是一名数学老师,被要求教计算机科学,所以需要帮助!!谢谢迈克尔,我是一名数学老师,被要求教计算机科学,所以我需要帮助!!Padraic-这是一个10行的列表,每行有一个5个字符的单词-夜晚,烟雾,GHOST@UdayPatel,那么每行一个字?是的,@Padraic Cunningham,对不起,每行一个字不是我上面写的。谢谢@Padraic Cunningham,它工作得很好,但请你解释一下“宽度=40”的意义是什么?@igavrill。非常感谢。它一开始不起作用,因为它一直说最后一行的chunk是一个语法错误。然而,当我将“xrange”改为“range”时,它似乎很喜欢它。谢谢你的帮助。