>>> sentence = "Thomas Jefferson began building Monticello at the age of 26."
>>> tokens1 = re.split(r"([-\s.,;!?])+", sentence)
>>> tokens2 = re.split(r"[-\s.,;!?]+", sentence)
>>> tokens1 = ['Thomas', ' ', 'Jefferson', ' ', 'began', ' ', 'building', ' ', 'Monticello', ' ', 'at', ' ', 'the', ' ', 'age', ' ', 'of', ' ', '26', '.', '']
>>> tokens2 = ['Thomas', 'Jefferson', 'began', 'building', 'Monticello', 'at', 'the', 'age', 'of', '26', '']
你能解释的目的(
和)
?
(..)
在正则表达式中表示一个捕获组(又名“捕获括号”)。当您想从模式中提取值时使用它们。在这种情况下,您使用的re.split
函数在模式具有捕获组时以特定方式运行。根据文档:
re.split(pattern, string, maxsplit=0, flags=0)
通过模式的出现拆分字符串。如果在模式中使用捕获括号,则模式中所有组的文本也将作为结果列表的一部分返回。
因此,通常情况下,用于拆分字符串的分隔符不会出现在结果中,就像在您的第二个示例中一样。但是,如果使用()
,则组中捕获的文本也将出现在拆分的结果中。这就是为什么你' '
在第一个例子中得到了很多。这就是您的团队所捕获的内容([-\s.,;!?])
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句