我想要这个表格
[(1, 'A'), (1, 'd'), (1, 'e'), (1, 'l'), (1, ' '), (1, 'a'), (1, 'n'), (1, 'd'), (1, ' '), (1, 'm'), (1, 'o'), (1, 'h'), (1, 'a'), (2, 'm'), (1, 'e'), (1, 'd')]
但我得到了这个
["(1, 'A')", "(1, 'd')", "(1, 'e')", "(1, 'l')", "(1, ' ')", "(1, 'a')", "(1, 'n')", "(1, 'd')", "(1, ' ')", "(1, 'm')", "(1, 'o')", "(1, 'h')", "(1, 'a')", "(2, 'm')", "(1, 'e')", "(1, 'd')"]
这是我的代码
def openRLEFile():
file = askopenfile(parent=root,title='Select a File')
global filename
filename = file.name
content = [x.strip('\n') for x in file]
tDecompressed = decodeRLE(content)
text.delete(0.0,END)
text.insert(0.0,tDecompressed)
file.close()
答案 0 :(得分:1)
虽然宏杰李提出的eval()
方便,但通常不建议将其用于安全目的。
相反,您可以手动处理:
def my_process(x):
x = x[1:-1] # get rid of brackets
x = x.split(", ")
return (int(x[0]), x[1])
然后使用:
content = [my_process(x.strip('\n')) for x in file]
答案 1 :(得分:-2)
使用eval将str转换为python元组,如下所示:
eval("(1, ' ')")
出:
(1, ' ')
在你的情况下:
content = [eval(x.strip('\n')) for x in file]
为了使代码安全,建议使用ast.literal_eval
import ast
content = [ast.literal_eval(x.strip('\n')) for x in file]