2017-07-21 83 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?

此外,RichieHindle回答你的問題很好:

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

在正則表達式,字符.手段任何字符。你必須逃避它,\.,以捕捉時期。

+0

謝謝!將試驗這個! –