2017-03-03 20 views
3

再使用して実際の文章を取得し、最初の文章はいつもの場所で始まるようにPythonはニュース記事に最初の文を分割し、ほとんどのニュース記事について

クアラルンプールとして、ハイフンまたはカンマで次のとマレーシアは月曜日、 キムジョンウンの兄弟の殺害に関する調査を行った。 の映像がクアラで致命的に攻撃された瞬間に現れた ルンプール空港。

、メイン州ポートランド - FairPointコミュニケーションズはスカボロー、ゴーハム、ウォーターヴィル、ケネバンクケープ エリザベスの規制固定電話 サービスの新規顧客の申し込み停止する 許可を規制当局を求めています。

私は月曜日に、このような

北朝鮮、マレーシアとして、主文で後半を分離するために再使用しようとしていますがリーダーキムの殺害に 捜査上の角をロックチョン・ウンの兄弟は、 の映像がクアラで致命的に襲われた瞬間を浮き彫りにした。 ルンプール空港。

sep = re.split('-|:|--', sent) 

しかし、これはすべてのために動作しない第2文の結果は次のとおりです:私はそれらを分離するために、次のregrexを使用

Portland、メイン '[

\ xe2 \ x80 \ x94フェアポイント・コミュニケーションズは、 スカーバラ、ゴーハム、ウォータービルの規制付き固定電話サービスの新規顧客の登録を停止する許可を 規制当局に依頼しました Kennebunk and Capeエリザベス。]

ユニコードと関連がありますか?または、再コードで異なる形式のハイフンを渡す必要がありますか?

これを普及させる普遍的な方法はありますか?

ありがとうございました。

+0

区切り文字は 'であることが必要である '-''、なぜあなたは'に分割しません' '? – DyZ

+0

可能であれば、Python 3..6を使用する必要があります。 – wwii

+0

@DYZ申し訳ありませんが、いくつかの文で ' - ' – Sean

答えて

2

あなたが推測したように、文字列に含まれるUnicode文字は、PORTLAND, Maine — FairPoint Communicationsの区切り記号がemble dashと同じ値で、正しく解釈されずに\xe2\x80\x94になります\u2014より。

  • がUnicode(最初の2行のいずれかと# -*- coding: utf-8 -*-を設定)などのソースコードのエンコーディングを定義し、に余分な文字を追加します。

    あなたがしたい何をすることができますいくつかのオプションがあります。あなたの正規表現。

  • あなたは再(sep = re.split(ur'-|:|--|\u2014', sent)
  • またはregexモジュールを使用して再documentationに助言などで、Unicode互換の正規表現を使用し
  • convert a unicode stringを参照してください)使用可能なライブラリのいずれかを使用してACSII文字列を変換することができます。
+1

'' 'pattern = '[:{}]'を使用しています。 .format(chr(8212)) '' ' - も動作します(Python 3.6)。 – wwii

0

あなたの2番目の文がUNICODE文字が含まれている、ので、PythonのデフォルトのエンコーディングがASCIIであるとして、あなたはあなたのコードを実行する前にdefine source code encodingする必要があります。さらに、あなたは間違った文字の--を使って文を吐きだそうとしています。 「 - それは(それはUNICODEです)

パイソン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 
+0

OPは、 '' 'chr(8212)' '' *または* '' '': '' ' – wwii

関連する問題