如何为文件中的每一行创建新列表?

时间:2016-03-08 16:46:09

标签: python list file

我正在尝试创建一个soduko样式的程序。 将记事本/ word文档上传到Python中,我希望Python检查:

每行(行)具有相同的字符数 每列具有相同的字符数 没有字符在列或行中重复两次 每个字符使用一次,每列和每行只使用一次

上传的文件可以是数字soduko或字母soduko。

到目前为止,我已设法加载,打开并阅读文档,并将文档的每一行作为列表附加。下面我将展示我的编码以便附加到列表中:

my_list = [line.strip() for line in open(filename)]

print (my_list)

但这会把我所有的行放在一个更大的列表中。 例如,如果我的文件是:

1 2 3
2 3 1
3 1 2

它会读取my_list,如下所示:[['1 2 3'], ['2 3 1'], ['3 1 2']]

我对Python比较陌生,不知道如何从列表中的列表中计算单个项目,所以这对我来说非常复杂。

有关如何进行/改变我的编码以使我更容易的任何建议或提示?

1 个答案:

答案 0 :(得分:1)

你可以split每行都有自己的理解:

my_list = [[x for x in line.strip().split(' ')] for line in open(filename)]

请注意,此oneliner与原始代码非常相似,不会关闭它打开的文件句柄。一种更安全的方法是单独打开它:

with open(filename) as f:
    my_list = [[x for x in line.strip().split(' ')] for line in f]