2014-04-17 75 views
2

我试图将句段分段。我选择了'。','?'和'!'作为分割符号。我想:段落到句子

format = r'((!)|(.)|(?))' 
delimiter = re.compile(format) 
s = delimiter.split(line) 

,但它给了我sre_constants.error: unexpected end of pattern

我也试过

format = [r'(!)',r'(?)',r'(.)'] 
delimiter = re.compile(r'|'.join(format)) 

这也导致错误。

我的方法有什么问题?

回答

6

.(通配符)和?(0或1,量词)是特殊的正则表达式字符,您需要将它们转义以便逐字使用它们。

然而,在你的情况下,它会更易于使用字符类(内这些字符不是特殊的了):

split(r'[!.?] ') 

字符类[...]代表“一个字符,任何的包含在角色类中的那些“。

+0

谢谢你的回答。在我的情况下,我也会包括空格(如果我直接使用[。?!],每个句子后面都有一个空格,对于我打印的每个句子,(i)前面有一个空格,(ii )“你是什么意思?”玛丽说,将被分割成两个句子而不是一个) – ChuNan

+0

看到你的更新。有用。非常感谢!将根据需要在3分钟内接受:) – ChuNan

+0

@ChuNan:确实更新。很高兴我能帮到 – Robin