我有一个莎士比亚戏剧的对话,基本上我想做的是:
在每个参与者名称后插入冒号(:)。因此,对话框变成如下所示:
布鲁图斯:废话废话废话
塞萨尔:废话废话废话
安东尼:废话废话废话
您可以看到情况并非如此,如下所示:
line_1 = 'CASSIUS Brutus, I misunderstood your feelings, and therefore kept to myself certain thoughts I might have shared. Tell me, good Brutus, can you see your face?'
line_2 = 'Trumpets play. Everyone exits except BRUTUS and CASSIUS .'
对话框的格式如下: 演员姓名用大写字母写在行首 比如说
line_1 >>> CASSIUS
也就是说,卡修斯是这里的演员
但是,有些台词包含剧中演员的姓名(不是在台词的开头),以大写形式书写。见第2行
所需的是一个正则表达式或python方法,以便在每个参与者名称后插入冒号。 我们通过以下两个条件知道演员的名字:
1)它位于行的开头。
2)全部以大写格式书写。
卡修斯是第1行的演员(它同时满足两个条件)。 然而,对于布鲁图斯和卡修斯来说,这不是LINGY2的情况(他们在中间),因此在他们的名字之后没有冒号。p>
这是我的尝试,适用于第2行中不想要的单词布鲁特斯和卡西乌斯
re.sub(r'(?<=([A-Z][A-Z]\b))', ': ', line_1)
re.sub(r'(?<=([A-Z][A-Z]\b))', ': ', line_1)
我得到以下输出,这是不好的
'CASSIUS: Brutus, I misunderstood your feelings, and therefore kept to myself certain thoughts I might have shared. Tell me, good Brutus, can you see your face?'
'Trumpets play. Everyone exits except BRUTUS: and CASSIUS: .'
你的方法太复杂了。只需在字符串的开头(
"^"
)替换两个或多个大写字母即可。这里,"\\1"
是对括号中第一个组的引用相关问题 更多 >
编程相关推荐