2017-07-21 7 views
3

Pythonで苦境に陥っています。私は多くのコメントと.txtファイルを取るし、リストに分割したいと思います。しかし、私はすべての句読点、スペース、\ nを分割したいと思います。私は次のPythonコードを実行すると、私のテキストファイルを奇妙な点で分割します。 注:以下では、テストするためにピリオドとエンドラインのみを分割しようとしています。しかし、それはしばしば、最後の文字を言葉で取り除くことです。Pythonで `re.split()`が不思議に動作しています

import regex as re 
with open('G:/My Documents/AHRQUnstructuredComments2.txt','r') as infile: 
    nf = infile.read() 
    wList = re.split('. | \n, nf) 

print(wList) 
+2

正規表現の文字列の終値を忘れてしまった。 –

+0

この投稿がhttps://stackoverflow.com/questions/4998629/python-split-string-with-multiple-delimitersに役立つかどうかを確認 – Jake

+0

なぜこのコードスニペットでそれをしたのかわからない、私はそこにipynbファイルを持っている –

答えて

2

あなたは引用符を修正し、正規表現に若干の変更を行う必要があります。

import regex as re 
with open('G:/My Documents/AHRQUnstructuredComments2.txt','r') as infile: 
    nf = infile.read() 
    wList = re.split('\W+' nf) 

print(wList) 
+0

これは役に立ちますが、.split()関数でどのようにエスケープシーケンスが機能するかを教えるサイトを知っていますか?私は句読点や特殊文字を削除しようとしているため、正しく記述していないと思います。 –

+0

@JohnWエスケープ文字を使用すると、次の文字を式で一致させることができます。さもなければ、キャラクターは特別な意味を持ちます。 split関数に関しては、渡された式はすべてのreメソッドで同じままです。エスケープ文字に関する詳細はこちらをご覧ください:http://www.regular-expressions.info/characters.html – Ajax1234

2

あなたは、文字列を閉じるのを忘れて、あなたが前に\が必要です。

import regex as re 
with open('G:/My Documents/AHRQUnstructuredComments2.txt','r') as infile: 
    nf = infile.read() 
    wList = re.split('\. |\n |\s', nf) 

print(wList) 

詳細については、Split Strings with Multiple Delimiters?を参照してください。正規表現で

import re 
DATA = "Hey, you - what are you doing here!?" 
print re.findall(r"[\w']+", DATA) 
# Prints ['Hey', 'you', 'what', 'are', 'you', 'doing', 'here'] 
+0

ありがとう!私はそれを試してみる。なぜPythonインタプリタが時々行うことをやっているのかを知ることは本当に便利です –

+1

ああ、Pythonと同じように直感的ですが、時には微妙なこともあります。 – Jake

2

、文字.手段任意の文字

はまた、RichieHindleは完全にあなたの質問に答えます。ピリオドをキャプチャするには、 \.をエスケープする必要があります。

+0

ありがとう!これで実験します! –

関連する問題