对于大多数新闻文章,第一句话总是以一个位置开头,后跟连字符或逗号,例如
吉隆坡:周一朝鲜和马来西亚对此表示强烈不满 调查杀害领导人金正恩的兄弟,作为 当他在瓜拉被致命袭击的那一刻出现了镜头 机场。缅因州波特兰 - FairPoint Communications已向监管机构提出要求 允许停止为规范固定电话注册新客户 在斯卡伯勒,戈勒姆,沃特维尔,肯纳邦克和开普敦服务 伊丽莎白。
我正在尝试使用re来分隔后半部分,即主要句子,例如
星期一,朝鲜和马来西亚对此表示反对 调查杀害领导人金正恩的兄弟,作为 当他在瓜拉被致命袭击的那一刻出现了镜头 机场。
我使用以下regrex将它们分开:
var food = gon.foods.filter(function(food) {
return food.id === foodID;
})[0];
但这对一切都不起作用,第二句话的结果是:
['波特兰,缅因州\ xe2 \ x80 \ x94 FairPoint Communications问道 监管机构允许停止为新客户注册 斯卡伯勒,戈勒姆,沃特维尔的固定座机服务, 肯纳邦克和伊丽莎白角。']
与unicode有什么关系吗?或者我需要在重新代码中传递不同格式的连字符?
是否有更好的方法可以做到这一点?
感谢。
答案 0 :(得分:2)
正如您所猜测的那样,问题是字符串中存在unicode字符,因为没有与{em}相同的ASCII字符PORTLAND, Maine — FairPoint Communications
中的分隔符isn&# 39; t很好地解释并变为\xe2\x80\x94
而不是\u2014
。
有一些选项可以让您按照自己的意愿行事:
# -*- coding: utf-8 -*-
设置为前两行之一)并将额外字符添加到正则表达式。sep = re.split(ur'-|:|--|\u2014', sent)
)答案 1 :(得分:0)
因为,你的第二个句子包含UNICODE个字符,所以在执行代码之前需要define source code encoding,因为python的默认编码是ASCII。而且,你试图用错误的字符--
吐出句子。它必须是—
(它是UNICODE)
python ( demo )
#!/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