【发布时间】:2010-12-11 12:52:27
【问题描述】:
我得到了这样格式的字符串:
"Wilbur Smith (Billy, son of John), Eddie Murphy (John), Elvis Presley, Jane Doe (Jane Doe)"
所以基本上它是演员姓名的列表(可选地在括号中加上他们的角色)。角色本身可以包含逗号(演员的名字不能,我强烈希望如此)。
我的目标是将此字符串拆分为一对列表 - (actor name, actor role)。
一个明显的解决方案是遍历每个字符,检查'('、')' 和',' 的出现情况,并在出现逗号外部时将其拆分。不过这个好像有点重……
我正在考虑使用正则表达式拆分它:首先用括号拆分字符串:
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', '']
这里奇怪的元素是演员的名字,甚至是角色。然后我可以用逗号分隔名称并以某种方式提取名称-角色对。但这似乎比我的第一种方法更糟糕。
有没有更简单/更好的方法来做到这一点,无论是使用单个正则表达式还是一段漂亮的代码?
【问题讨论】: