<p>您可以使用<code>eval</code>。我想这是最短的。</p>
<pre><code>>>> s = '(1,2,3,4,5),(5,4,3,2,1)'
>>> ts = eval(s)
>>> ts
((1, 2, 3, 4, 5), (5, 4, 3, 2, 1))
>>> tsp = [(el[0],el[-1]) for el in ts]
>>> tsp
[(1, 5), (5, 1)]
</code></pre>
<p>不过,使用<code>eval</code>并不是一个好的做法。</p>
<p>另一个选项是使用<code>re</code>模块解析字符串。</p>
<pre><code>>>> a = re.findall('\([^)]*\)',s)
>>> a
['(1,2,3,4,5)', '(5,4,3,2,1)']
</code></pre>
<p>Regexp模式意味着:</p>
<pre><code>\( #opening parenthesis
[^)]* #from 0 to infinite symbols different from )
\) #closing parenthesis
</code></pre>
<p>是的。</p>
<pre><code>>>> b = [el.strip('()') for el in a]
>>> b
['1,2,3,4,5', '5,4,3,2,1']
>>> c = [el.split(',') for el in b]
>>> c
[['1', '2', '3', '4', '5'], ['5', '4', '3', '2', '1']]
>>> d = [tuple(int(el2) for el2 in el) for el in c]
>>> d
[(1, 2, 3, 4, 5), (5, 4, 3, 2, 1)]
</code></pre>
<p>此外,您还可以执行以下操作:</p>
<pre><code>>>> [tuple(int(i) for i in el.strip('()').split(',')) for el in s.split('),(')]
[(1, 2, 3, 4, 5), (5, 4, 3, 2, 1)]
</code></pre>
<p>这种方法根本不需要模块。但是它不是很健壮(如果输入字符串有一些不一致,例如括号和逗号之间的空格<code>...), (...</code>,那么noting就可以工作)。</p>