我有一个以制表符分隔的电影和演员文本文件。条目采用以下格式:
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()
从剩余的字符串中创建一个列表。但这并没有返回我想要的结果。
答案 0 :(得分:2)
使用ast.literal_eval
,safer版本的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"]