如何抓住用破折号分隔的句子

时间:2012-11-18 23:35:37

标签: python regex csv

如果用破折号分隔句子,那么正则表达式会抓住句子(代表语音)?问题在于,有时候这种情绪会被插入正常的句子中,因此会被两边的短划线所引发。但有时候,它们会以短划线打开并以完整的方式关闭。更多的是破折号并不总是用于引出口语句子。我需要捕获的部分放在括号中(对不起,句子是立陶宛语)。

[- Dilze, -] šaukė ji be jokios intonacijos, pabrėžtinumo ar skubos, tarsi nesitikėdama atsakymo. [- Dilze!]
Dilzė atsakė ir liovės barškinusi rykais, stovinčiais ant krosnies, bet dar nespėio pereit per virtuvę, kai ponia Kompson pašaukė dar kartą, o kol ji perėjo per valgomąjį ir kyštelėjo galvą į tą pilką lango šviesą, - dar vieną kartą.
[- Einu, einu, -] atsakė Dilzė. [- Aš čia. Pripilsiu ją, kai tik vanduo sušils, -] pasikaišė sijoną ir ėmė kopti laiptais, visai užstodama tą pilką šviesą. [- Padėkit ją antžemės ir grįžkite į lovą.]

3 个答案:

答案 0 :(得分:1)

在Python中re不支持Unicode字符属性,但regex不支持。

使用regex.findall模式

(?m)-\s*\p{Lu}.*?(?:-|[.,!?]\s*$)

答案 1 :(得分:-1)

据我了解,您正在寻找一个匹配任何以[-开头且以.]结尾的正则表达式,其中点可以是任何行尾。

正则表达式\[\-.*?[\-\.\!]\]执行此操作。部分[\-\.\!]定义了可以在结尾]前面添加的所有字符。中间的问号确保正则表达式不是贪婪的,但如果这对您有用,则它是特定于正则表达式的实现。

答案 2 :(得分:-1)

我喜欢在带括号的情况下使用字符串操作而不是正则表达式。

>>> text = '''[- here is some text -] here is some not text [- that i want to get -]'''

>>> [sent.split('-]')[0] for sent in text.split('[-') if '-]' in sent]
[' here is some text ', ' that i want to get ']

text.split('[-')拆分字符串[-。列表理解将这些结果反馈到第二个拆分,在相对的括号上拆分。注意,如果你有'浮动'括号,这将不起作用,但如果你正在操纵某人手工放入的标记,那么这是一个好的,便宜的(正则表达式是昂贵的)解决方案。这样,您不必担心安装模块。

相关问题