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

时间:2019-01-04 08:31:01

标签: python

很简单的问题,但给我带来了一些麻烦:

我有

 "('A', 'Open')" # type = str

,并希望:

 ('A','Open') # type = tuple

尝试使用.split(),仅将整个过程转换为元组(str)均未成功。

4 个答案:

答案 0 :(得分:2)

有两种方法可以实现,都将字符串解析为Python代码。

看似更简单的选项是使用eval

稍微复杂一点,但更好的选择是使用ast.literal_eval

Using python's eval() vs. ast.literal_eval()?中,一切都已经说过,为什么后者几乎总是您真正想要的。请注意,即使是eval的官方文档,也应该使用ast.literal_eval

答案 1 :(得分:0)

怎么样?

import re

m_s = "('A', 'Open')"
patt = r"\w+"
print(tuple(re.findall(patt, m_s)))

答案 2 :(得分:0)

使用正则表达式如何?

In [1686]: x
Out[1686]: '(mono)'

In [1687]: tuple(re.findall(r'[\w]+', x))
Out[1687]: ('mono',)

In [1688]: x = '(mono), (tono), (us)'

In [1689]: tuple(re.findall(r'[\w]+', x))
Out[1689]: ('mono', 'tono', 'us')

In [1690]: x = '(mono, tonous)'

In [1691]: tuple(re.findall(r'[\w]+', x))
Out[1691]: ('mono', 'tonous')

答案 3 :(得分:0)

最可怕的是

eval("('A','Open')") #will return type as tuple

eval()以python表达式的形式评估并执行字符串