Python拆分新闻文章中的第一个句子,并使用re获取实际句子
对于大多数新闻文章,第一句总是以位置开头,后跟连字符或逗号,例如 吉隆坡:周一,朝鲜和马来西亚就这一事件发生争执 对朝鲜领导人金正恩的兄弟遇害的调查 他在吉隆坡遭到致命袭击的那一刻的录像出现了 隆坡机场 波特兰,缅因州-FairPoint Communications已要求监管机构 停止为受监管固定电话注册新客户的许可 在斯卡伯勒、戈勒姆、沃特维尔、肯尼邦克和开普敦提供服务 伊丽莎白 我试着用re来区分下半句,这是主句,例如 周一,朝鲜和马来西亚就朝鲜核问题发生了争执 对朝鲜领导人金正恩的兄弟遇害的调查 他在吉隆坡遭到致命袭击的那一刻的录像出现了 隆坡机场 我使用以下regrex将它们分开:Python拆分新闻文章中的第一个句子,并使用re获取实际句子,python,regex,Python,Regex,对于大多数新闻文章,第一句总是以位置开头,后跟连字符或逗号,例如 吉隆坡:周一,朝鲜和马来西亚就这一事件发生争执 对朝鲜领导人金正恩的兄弟遇害的调查 他在吉隆坡遭到致命袭击的那一刻的录像出现了 隆坡机场 波特兰,缅因州-FairPoint Communications已要求监管机构 停止为受监管固定电话注册新客户的许可 在斯卡伯勒、戈勒姆、沃特维尔、肯尼邦克和开普敦提供服务 伊丽莎白 我试着用re来区分下半句,这是主句,例如 周一,朝鲜和马来西亚就朝鲜核问题发生了争执 对朝鲜领导人金正恩的兄弟遇
sep = re.split('-|:|--', sent)
但这并不适用于所有情况,第二句话的结果是:
['PORTLAND,Maine\xe2\x80\x94 FairPoint Communications已询问
监管机构要求获得停止与新客户签约的许可
沃特维尔市戈勒姆斯卡伯勒市受管制的固定电话服务,
肯尼邦克和伊丽莎白角
这和unicode有什么关系吗?或者我需要在re代码中传递不同格式的连字符吗
有没有一种通用的方法可以做得更好
谢谢 正如您所猜测的,问题在于字符串中存在unicode字符,因为在缅因州波特兰的
中,没有一个ASCII字符的值与em破折号相同。分隔符中的分隔符-FairPoint Communications
解释得不好,变成了\xe2\x80\x94
,而不是\u2014
有几个选项可以让你做你想做的事:
- 将源代码编码定义为unicode(将
设置为前两行之一),并将额外的字符添加到正则表达式中#-*-编码:utf-8-*-
- 您可以使用其中一个可用库将字符串转换为ACSII(请参阅)
- 使用与unicode兼容的正则表达式和re(
)sep=re.split(ur'-|::|-|-|\u2014',sent)
- 或按照“重复使用模块”中的建议
--
吐出句子。它必须是-
(它是一个UNICODE)
python()
分隔符是
'-'
,为什么要在'-'
上拆分?如果可能,应该开始使用Python 3。。6@DYZ对不起,我没有说清楚,因为在一些句子中,他们使用“--”OP想在chr(8212)
或上拆分:“
pattern='[:{}]”。format(chr(8212))
-也可以(Python 3.6)。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import re
sent = "PORTLAND, Maine — FairPoint Communications has asked regulators for permission to stop signing up new customers for regulated landline service in Scarborough, Gorham, Waterville, Kennebunk and Cape Elizabeth."
sep = re.split('-|:|—', sent)
print sep