如何在python中将字符串转换为元组

如何在python中将字符串转换为元组,python,tuples,Python,Tuples,我已经从下面给出的csv_文件中读取了一个字符串 "('Who is Shaka Khan?',{'entities': [(7, 17, 'PERSON')]})," Who is Shaka Khan? {'entities': [(7, 17, 'PERSON')]} 当我迭代它时,我得到的每个字符如下: ('(', "'", 'W', 'h', 'o', ' ', 'i', 's', ' ', 'S', 'h', 'a', 'k', 'a', ' ', 'K', 'h', '

我已经从下面给出的csv_文件中读取了一个字符串

"('Who is Shaka Khan?',{'entities': [(7, 17, 'PERSON')]})," 
 Who is Shaka Khan?

{'entities': [(7, 17, 'PERSON')]} 
当我迭代它时,我得到的每个字符如下:

('(', "'", 'W', 'h', 'o', ' ', 'i', 's', ' ', 'S', 'h', 'a', 'k', 'a', ' ', 'K', 'h', 'a', 'n', '?', "'", ',', '{', "'", 'e', 'n', 't', 'i', 't', 'i', 'e', 's', "'", ':', ' ', '[', '(', '7', ',', ' ', '1', '7', ',', ' ', "'", 'P', 'E', 'R', 'S', 'O', 'N', "'", ')', ']', '}', ')', ',') 
但我需要它以元组的形式存储,这样当我迭代它时,我可以得到如下所示的输出

"('Who is Shaka Khan?',{'entities': [(7, 17, 'PERSON')]})," 
 Who is Shaka Khan?

{'entities': [(7, 17, 'PERSON')]} 

如何在python中实现这一点?

使用
ast.literal\u eval
将字符串转换为元组

>>> s = "('Who is Shaka Khan?',{'entities': [(7, 17, 'PERSON')]})," 
>>> import ast
>>> t = ast.literal_eval(s)
>>> t[0]
('Who is Shaka Khan?', {'entities': [(7, 17, 'PERSON')]})
>>> t[0][0]
'Who is Shaka Khan?'
>>> t[0][1]
{'entities': [(7, 17, 'PERSON')]}
或者,您可以将其转换为dict,以便于访问

>>> d = dict(ast.literal_eval(s))
>>> d['Who is Shaka Khan?']
{'entities': [(7, 17, 'PERSON')]}

使用
literal\u eval

In [87]: from ast import literal_eval

In [88]: literal_eval("('Who is Shaka Khan?',{'entities': [(7, 17, 'PERSON')]}),")
Out[88]: (('Who is Shaka Khan?', {'entities': [(7, 17, 'PERSON')]}),)
您必须使用tuple函数,但它必须是一个列表

例子: 返回 (4、5、6)


您可以使用
ast.literal\u eval

import ast
a = ast.literal_eval("('Who is Shaka Khan?',{'entities': [(7, 17, 'PERSON')]}),")
print(a[0][1])
输出

{'entities': [(7, 17, 'PERSON')]}

我不确定,但请再试一次:
a='who is Shaka Khan'打印元组(a,)
我不明白这与这个问题有什么关系?你好,很高兴再次见到你@Roganjosh。所以我觉得这个问题有点难理解,但从我得到的信息来看,我觉得他问的标题是“如何在python中将字符串转换为元组”,尽管他也问了如何在它上面创建迭代,这是在我之前有人问过的