Python,将文件中的列表读取出来并作为列表赋给变量
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python,将文件中的列表读取出来并作为列表赋给变量相关的知识,希望对你有一定的参考价值。
比如,文件中保存的是一个list:
[1,2,3,4,5,6,7]
用open + read()
并赋值给一个变量a,这是作为字符串类型来进行的,
此时 a=‘[1,2,3,4,5,6,7]’
求问如何怎么在读取后,把字符串转成list
像这样
a=[1,2,3,4,5,6,7]
如果是a="[1,2,3,4,5,6,7]",那么可以替换掉方括号,然后用split方法拆分字串
a="[1,2,3,4,5,6,7]"a=a.replace('[', '')
a=a.replace(']', '')
a=map(lambda i: int(i), a.split(',')) 参考技术B >>> a='[1,2,3,4,5,6,7]'
>>> a=eval(a)
>>> a
[1, 2, 3, 4, 5, 6, 7]追问
像这样的情况,还有什么其他的类型转换时可用的函数吗?谢谢
本回答被提问者采纳 参考技术C 如果确定a的格式无误的话,可以直接试试:eval(a) 参考技术D 可以使用正则表达式。或者可以看[符号 看到一个[开始存,到]为止,不行的话就只能使用正则表达式了。
import re
从文本文件中读取列表元组作为元组,而不是字符串 - Python
【中文标题】从文本文件中读取列表元组作为元组,而不是字符串 - Python【英文标题】:Read in tuple of lists from text file as tuple, not string - Python 【发布时间】:2011-06-17 11:53:52 【问题描述】:我有一个要读取的文本文件,其中包含多行元组。文本中的每个元组/行的形式为 ('description string', [list of integers 1], [list of integers 2])。文本文件可能类似于:
('项目 1', [1,2,3,4] , [4,3,2,1]) ('项目 2', [ ] , [4,3,2,1]) ('项目 3, [1,2] , [ ])
我希望能够从文本文件中读取每一行,然后将它们直接放入一个函数中,
function(string, list1, list2)
我知道每一行都是作为一个字符串读入的,但我需要以某种方式提取这个字符串。我一直在尝试使用 string.split(','),但是当我点击列表时就会出现问题。有没有办法做到这一点,还是我必须修改我的文本文件?
我还有一个元组列表的文本文件,我想以类似的形式读取它,格式为
[(1,2),(3,4),(5,6),...]
可能包含任意数量的元组。我想在列表中阅读它并为列表中的每个元组执行一个 for 循环。我认为这两个将使用大致相同的过程。
【问题讨论】:
【参考方案1】:您可能还想查看pickle 模块,用于将 python 对象保存到文本文件中,然后再将它们读回。
【讨论】:
【参考方案2】:使用eval
怎么样?
编辑使用ast.literal_eval
查看@Ignacio的答案。
>>> c = eval("('item 1', [1,2,3,4] , [4,3,2,1])")
>>> c
('item 1', [1, 2, 3, 4], [4, 3, 2, 1])
只有在您 100% 确定文件内容的情况下,我才建议您这样做。
>>> def myFunc(myString, myList1, myList2):
... print myString, myList1, myList2
...
>>> myFunc(*eval("('item 1', [1,2,3,4] , [4,3,2,1])"))
item 1 [1, 2, 3, 4] [4, 3, 2, 1]
请参阅@Ignacio 的回答……安全得多。
应用 ast 会产生:
>>> import ast
>>> def myFunc(myString, myList1, myList2):
... print myString, myList1, myList2
...
>>> myFunc(*ast.literal_eval("('item 1', [1,2,3,4] , [4,3,2,1])"))
item 1 [1, 2, 3, 4] [4, 3, 2, 1]
【讨论】:
【参考方案3】:您正在寻找ast.literal_eval()
。
>>> ast.literal_eval("('item 1', [1,2,3,4] , [4,3,2,1])")
('item 1', [1, 2, 3, 4], [4, 3, 2, 1])
【讨论】:
我可能应该提到我正在运行 Python 2.3,这是用于更高版本的吗?我找不到 ast 模块。 @Das.Rot:不幸的是。 @Das.Rot:看起来是 2.6+。如果您确定内容,那么eval
将起作用。
天啊,这对我来说解决了一件非常重要的事情。我正在使用 ConfigParser。我正在将一个元组作为配置设置的参数之一写入文件。使用它可以让我读回代表元组的字符串并将其转换回元组。这对于在配置文件中创建数据列表或元组非常强大。以上是关于Python,将文件中的列表读取出来并作为列表赋给变量的主要内容,如果未能解决你的问题,请参考以下文章