6

我想从文本文件中加载列表中的列表。我经历了很多例子,但没有解决方案。这就是我想做的我是python的新手

def main()
    mainlist = [[]]
    infile = open('listtxt.txt','r')
    for line in infile:
        mainlist.append(line)

    infile.close()

    print mainlist

`[[],['abc','def', 1],['ghi','jkl',2]]`

但是我想要的是这样的

[['abc','def',1],['ghi','jkl',2]]

我的清单包含

'abc','def',1
'ghi','jkl',2
'mno','pqr',3

我想要的是当我访问列表时 print mainlist[0] 应该返回

'abc','def',1

任何帮助将不胜感激谢谢,

4

6 回答 6

15

在我看来,您可以这样做:

from ast import literal_eval
with open('listtxt.txt') as f:
    mainlist = [list(literal_eval(line)) for line in f]

这是确保保留元素类型的最简单方法。例如一行:

"foo","bar",3

将被转换为 2 个字符串和一个整数。当然,行本身需要格式化为 python 元组......由于它的通用性和简单性,这可能不是最快的方法。

于 2013-04-28T23:48:48.593 回答
5

也许是这样的。

mainlist = []
infile = open('listtxt.txt','r')
for line in infile:
    mainlist.append(line.strip().split(','))

infile.close()

print mainlist
于 2013-04-28T23:37:02.533 回答
2

您使用mainlist空列表作为第一个元素进行初始化,而不是作为空列表本身。改变:

mainlist = [[]]

mainlist = []
于 2013-04-28T23:37:09.320 回答
1

我会尝试类似的东西:

with open('listtxt.txt', 'r') as f:
    mainlist = [line for line in f]
于 2013-04-28T23:44:22.643 回答
1
mainlist = []
infile = open('filelist.txt', 'r')
for line in infile:
    line = line.replace('\n', '').replace('[', '').replace(']', '').replace("'", "").replace(' ', '')
    mainlist.append(line.split(','))
infile.close()
于 2018-03-03T16:00:17.493 回答
1

您可以使用如下json模块(Python 3.x):

import json

def main()
    mainlist = [[]]
    infile = open('listtxt.txt','r')

    data = json.loads(infile.read())

    mainlist.append(data)

    infile.close()

    print(mainlist)

>>> [[],['abc','def', 1],['ghi','jkl',2]]

您的“listtxt.txt”文件应如下所示:

[["abc","def", 1],["ghi","jkl",2]]

要导出您的列表,请执行以下操作:

def export():
        with open("listtxt.txt", 'w') as export_file:
             json.dump(mainlist, export_file)

JSON 模块可以加载列表,在此处找到

于 2019-02-25T15:06:45.293 回答