如何在python中读取文件后转换为列表列表

时间:2015-06-20 05:05:54

标签: python

我正在通过使用writelines(str(list))的迭代将列表写入文本文件。简而言之,我将使用2个列表来说明:

list1=['[#1]:', (4, 8, 16, 29), (4, 8, 16, 30), (4, 8, 16, 32)]   
list2=['[#2]:', (3, 9, 13, 20), (3, 9, 13, 36), (3, 9, 13, 38)]

在文本文件中,我有一堆单独的列表:

['[#1]:', (4, 8, 16, 29), (4, 8, 16, 30), (4, 8, 16, 32)] ['[#2]:', (3, 9, 13, 20), 
(3, 9, 13, 36), (3, 9, 13, 38)] 

当我使用readlines(file.txt)将文本文件读回列表时,我得到一个字符串列表:

["['[#1]:', (4, 8, 16, 29), (4, 8, 16, 30), (4, 8, 16, 32)], ['[#2]:', (3, 9, 13, 20), 
(3, 9, 13, 36), (3, 9, 13, 38)]"] 

这是预期的。我想要做的是删除' " ' (引号)在列表的开头和结尾处,这样我就可以遍历列表和进程列表[#1],列出[#2]等等。我希望这是基本的,但我无法工作出。如果有人能告诉我如何,我会说服我。

提前致谢。

3 个答案:

答案 0 :(得分:1)

您可以eval - 将字符串作为Python表达式:

>>> s = "[1, 2, 3, 4]"
>>> l = eval(s)
>>> l
[1, 2, 3, 4]

答案 1 :(得分:0)

您是否尝试过pickle模块?

它用于对象序列化,您可以将对象(甚至列表)转储到文件中,并直接将其直接读回。

示例 -

groupingBy

对于追加,您可以将模式用作import pickle lst1 = [1,2,3,4,5] with open('test1.bin','wb') as f: pickle.dump(lst1,f) with open('test1.bin','rb') as f1: lst2 = pickle.load(f1) print(lst2) >> [1,2,3,4,5] 。附加示例 -

ab

答案 2 :(得分:0)

获得列表后,使用任何方法删除引号后。您可以使用lambda将列表列表转换为展平list,如list lists下面的l和'm'

l = [[9,8,6],[1,3,2], [4], [5,7]]
reduce(lambda x,y: x+y,l)

结果:

[9, 8, 6, 1, 3, 2, 4, 5, 7]

同样适用于

m = [(4, 8, 16, 29), (4, 8, 16, 30), (4, 8, 16, 32)]
reduce(lambda x,y: x+y,m)

结果:

(4, 8, 16, 29, 4, 8, 16, 30, 4, 8, 16, 32)