我正在通过使用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]等等。我希望这是基本的,但我无法工作出。如果有人能告诉我如何,我会说服我。
提前致谢。
答案 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)