使用文本文件将单词排成网格形式

2024-05-17 03:44:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个从一个文本文件的6个单词的列表,我想打开这个文件来读取一个3x2网格的单词列表,也可以在每次运行程序时随机选择单词的顺序。在

单词是:

cat, dog, hamster, frog, snail, snake

我希望它们显示为:(但每次程序运行时都是随机的)

^{pr2}$

到目前为止,我所能做的就是从6个单词的列表中随机抽取一个单词,然后使用-help将得到很大的评价

import random

words_file = random.choice(open('words.txt', 'r').readlines())
print words_file

Tags: 文件程序网格列表顺序random单词cat
3条回答

还有一个:

>>> import random
>>> with open("words.txt") as f:
...    words = random.sample([x.strip() for x in f], 6)
... 
...
>>> grouped = [words[i:i+3] for i in range(0, len(words), 3)]
>>> for l in grouped:
...     print "".join("{:<10}".format(x) for x in l)
...     
... 
snake     cat       dog       
snail     frog      hamster   

首先,我们读取文件的内容并随机选取六行(确保行中只包含一个单词)。然后我们将单词分成三个一组,并使用字符串格式将其打印出来。格式括号中的<10将文本左对齐,并用10个空格填充每个项目。在

你会想看看string formatting!在

import random

with open('words.txt','r') as infile:
    words_file = infile.readlines()

random.shuffle(words_file) # mix up the words

maxlen = len(max(words_file, key=lambda x: len(x)))+1
print_format = "{}{}{}".format("{:",maxlen,"}")

print(*(print_format.format(word) for word in words_file[:3])
print(*(print_format.format(word) for word in words_file[3:])

有更好的方法将列表按3分组,但这对您有限的测试用例有效。Here's a link to some more information on chunking lists

我最喜欢的食谱是用zipiter分块:

^{pr2}$

要选择6个单词,请尝试^{}

words = randoms.sample(open('words.txt').readlines(), 6)

相关问题 更多 >