将看起来像列表的文件解析为列表

时间:2014-05-14 02:48:08

标签: python list

我有一个文件,看起来像一个列表,它是引号中的一长串单词,用逗号分隔。因此,当我从文件中读取时,我会得到类似的内容:

'"abc","def","ghi","jkl"\n'

我想将此文件解析为字符串列表。这是我解析的实现:

words = f.readline()
words = names.rstrip('\n')
words = [x.strip('"') for x in words.split(',')]

我的名单将是:

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

这只是3行代码,但它看起来非常像原始文件输入。我不禁想到我能做得更好。该文件看起来像是一个列表的形式,除了它是一个字符串。有没有什么方法可以简单地将Python变成一个列表而不解构已经看起来像字符串列表并重新制作它的内容?

1 个答案:

答案 0 :(得分:0)

你所拥有的是python文字的字符串化版本(repr)(没有括号它是tuple而不是list,但这并不是非常重要)。

您可以使用ast.literal_eval将其安全地转回python对象:

s = '"abc","def","ghi","jkl"\n'

from ast import literal_eval

literal_eval(s)
Out[155]: ('abc', 'def', 'ghi', 'jkl')

它甚至可以为你处理换行符。