我有一个从文本文件生成的列表,需要将其放入3x3网格中。我尝试了多种方法,但它们似乎都适用于旧版本的Python。
with open("words.txt") as f: #open/import words from words.txt
words = [x.strip() for x in f] #add to list
我需要将文本文件中的单词添加到列表中。文件中有10个单词,显示了9个单词。我已经通过从文本文件中删除/删除列表中的单词来删除/添加单词。
答案 0 :(得分:1)
不确定你是否想要最后九个或前九个,如果你想要前九个删除第一个(f),我假设每个单词都在一个单独的行上:
with open("words.txt") as f: #open/import words from words.txt
next(f) # skip first?
words = [[next(f).strip() for _ in range(3)] for _ in range(3)]
或者使用itertools.islice:
from itertools import islice
with open("words.txt") as f: #open/import words from words.txt
next(f)
words = [list(map(str.rstrip,islice(f,None,3))) for _ in range(3)]
答案 1 :(得分:0)
只是有点不同,我假设所有单词都包含在一行中。这样我就能用readline()读取该行,拆分并切掉第一个元素。如果我想要前9个,我可以说[:9],或者显然是有更多文本的行的其他切片。
import numpy as np
with open('filename.txt', 'r') as fp:
words = fp.readline().split()[1:]
threebythree = np.array(words).reshape((3,3))
但是我想要展示的是你正在做的事实上正在重塑矩阵,这可以通过像numpy这样的工具包来完成。首先,将列表读入数组(9维1D数组),然后使用上述命令将其重新整形为3,3。列表"单词"如果需要,在这个例子中保持原样以便进一步处理。