将文本文件的一部分转换为列表

时间:2014-02-06 22:22:13

标签: python list tsv

我有一个以制表符分隔的电影和演员文本文件。条目采用以下格式:

The Shawshank Redemption    ["Tim Robbins", "Morgan Freeman", "Bob Gunton", "William Sadler"]

The Dark Knight ["Christian Bale", "Heath Ledger", "Aaron Eckhart", "Michael Caine"]

有没有一种简单的方法让python将actor“list”视为python列表数据结构,而不是带有[]字符的字符串?我尝试编写代码来切换从[字符开始的字符串,使用[和{{]".strip()去掉1}},然后使用.rstrip()从剩余的字符串中创建一个列表。但这并没有返回我想要的结果。

1 个答案:

答案 0 :(得分:2)

使用ast.literal_evalsafer版本的python的eval()函数,它接受一个字符串输入并将其视为python代码。假设总有一个制表位,您可以使用制表符'\t'进行拆分,只需评估第二个元素:

import ast
for line in f.readlines():
    temp_list = ast.literal_eval(line.split('/t')[1])
    # do something

只是故障,以第一行为例:

>>> first_line = "The Shawshank Redemption    ["Tim Robbins", "Morgan Freeman", "Bob Gunton", "William Sadler"]"
>>> split_line = first_line.split('/t')
>>> split_line
['The Shawshank Redemption', '["Tim Robbins", "Morgan Freeman", "Bob Gunton", "William Sadler"]']
>>> best_list_ever = ast.literal_eval(split_line[1])
>>> best_list_ever
["Tim Robbins", "Morgan Freeman", "Bob Gunton", "William Sadler"]