<p>我有一系列这样的格式:</p>
<pre><code>"Wilbur Smith (Billy, son of John), Eddie Murphy (John), Elvis Presley, Jane Doe (Jane Doe)"
</code></pre>
<p>所以基本上是演员的名字列表(可以选择在括号中后跟他们的角色)。角色本身可以包含逗号(我强烈希望演员的名字不能包含逗号)。</p>
<p>我的目标是把这个字符串分成一个成对的列表-<code>(actor name, actor role)</code>。</p>
<p>一个明显的解决方案是遍历每个字符,检查是否出现<code>'('</code>、<code>')'</code>和<code>','</code>并在出现外部逗号时将其拆分。但这看起来有点重。。。</p>
<p>我正在考虑使用regexp拆分它:首先用括号拆分字符串:</p>
<pre><code>import re
x = "Wilbur Smith (Billy, son of John), Eddie Murphy (John), Elvis Presley, Jane Doe (Jane Doe)"
s = re.split(r'[()]', x)
# ['Wilbur Smith ', 'Billy, son of John', ', Eddie Murphy ', 'John', ', Elvis Presley, Jane Doe ', 'Jane Doe', '']
</code></pre>
<p>这里奇怪的元素是演员的名字,甚至是角色。然后,我可以用逗号分隔名称,并以某种方式提取名称-角色对。但这似乎比我的第一个方法更糟。</p>
<p>有没有更简单/更好的方法可以做到这一点,要么使用一个regexp,要么使用一段漂亮的代码?</p>