发布于2019-08-22 17:42 阅读(3816) 评论(0) 点赞(17) 收藏(5)
参考博客:https://blog.csdn.net/blmoistawinde/article/details/82379256
该博客将引号的情况也考虑进来,
然后实践中发现还有括号的问题。
- import re
- def cut_sent(para):
- para = re.sub('([。!?\?])([^”’])', r"\1\n\2", para) # 单字符断句符
- para = re.sub('(\.{6})([^”’])', r"\1\n\2", para) # 英文省略号
- para = re.sub('(\…{2})([^”’])', r"\1\n\2", para) # 中文省略号
- para = re.sub('([。!?\?][”’])([^,。!?\?])', r'\1\n\2', para)
- # 如果双引号前有终止符,那么双引号才是句子的终点,把分句符\n放到双引号后,注意前面的几句都小心保留了双引号
- para = para.rstrip() # 段尾如果有多余的\n就去掉它
- # 很多规则中会考虑分号;,但是这里我把它忽略不计,破折号、英文双引号等同样忽略,需要的再做些简单调整即可。
- return para.split("\n")
代码中
-
- para = re.sub('([。!?\?])([^”’])', r"\1\n\2", para) # 单字符断句符
表示第一组匹配。!?出现,第二组匹配后面跟的不是双引号,才能进行断句。那么在第一组匹配结果和第二组匹配结果之间加上换行符。
para = re.sub('([。!?\?][”’])([^,。!?\?])', r'\1\n\2', para)
表示在第一组中匹配到。!?,之后匹配到双引号,然后第二组匹配判断后面的符号,是为了将换行符放到双引号后面。
并且在文中出现括号的时候,需要将右括号也考虑进来。
-
- para = re.sub('([。!?\?])([^”^)^)’])', r"\1\n\2", para)
- #如果。!?后面不是双引号和中英的右括号,才可以加入换行
- para = re.sub('([。!?\?][”))’])([^,。!?\?])', r'\1\n\2', para)
- #同上将中英右括号加入考虑,把换行放其后方。
作者:hghgh
链接:https://www.pythonheidong.com/blog/article/53241/341efe2e74544af26768/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!