获取句子中单词的索引

2024-04-26 14:22:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一篇平行课文。每行包含源语言(src)和目标语言(tgt)。在src和tgt中,括号之间都有一些表达式。文件看起来像这样

parallel(src('he is a [good man]'),tgt('lui è un [buon uomo]')). 

parallel(src('she is a [good woman]'),tgt('lei è una donna buona')). 

parallel(src('he is a beautiful man]'),tgt('lei è una bella donna')). 

所以在某些行中括号之间有表达式,而在其他行中括号之间没有表达式。在

在src和tgt语言中,我想在每一行旁边提取括号之间的表达式和表达式第一个单词的位置。 我试过这个密码

^{pr2}$

它适用于方括号之间有表达式的行,但对于那些方括号之间没有表达式的行,它会给出错误“IndexError:list index out out range”

预期输出为

parallel(src('he is a [good man]'),tgt('lui è un [buon uomo]')). [[good man:3][buon uomo:3]

parallel(src('she is a [good woman]'),tgt('lei è una donna buona')).[[good woman:3][]] 

parallel(src('he is a beautiful man]'),tgt('lei è una bella donna')). [[]:[]]

有人能帮忙吗?在


Tags: srcparallelis表达式括号hegoodtgt
1条回答
网友
1楼 · 发布于 2024-04-26 14:22:55

发生此错误是因为ss.split确实生成了一个包含0个单词的列表。简单的解决方法是:

if not ss or not tt:
    print(line, "[[]:[]]")
else:
    print line, [[ss, ':', srcs.index('['+ss.split()[0])],[ tt,':', tgts.index('['+tt.split()[0])]]

一个更复杂的解决方法是正确地执行,即:

^{pr2}$

相关问题 更多 >