2017-02-19 15 views
-3

一些我有這樣的文字代碼:如何找到一個文本塊,然後在正則表達式

primary- {'neu': 1.0, 'compound': 0.0, 'pos': 0.0, 'neg': 0.0} 
personal- {'neu': 1.0, 'compound': 0.0, 'pos': 0.0, 'neg': 0.0} 
complete- {'neu': 1.0, 'compound': 0.0, 'pos': 0.0, 'neg': 0.0} 
use.- {'neu': 1.0, 'compound': 0.0, 'pos': 0.0, 'neg': 0.0} 
light- {'neu': 1.0, 'compound': 0.0, 'pos': 0.0, 'neg': 0.0} 
durable- {'neu': 1.0, 'compound': 0.0, 'pos': 0.0, 'neg': 0.0} 
repair.- {'neu': 1.0, 'compound': 0.0, 'pos': 0.0, 'neg': 0.0} 
rough- {'neu': 1.0, 'compound': 0.0, 'pos': 0.0, 'neg': 0.0} 
user(-{'neu': 1.0, 'compound': 0.0, 'pos': 0.0, 'neg': 0.0} 
ex-nokia- {'neu': 1.0, 'compound': 0.0, 'pos': 0.0, 'neg': 0.0} 
many- {'neu': 1.0, 'compound': 0.0, 'pos': 0.0, 'neg': 0.0} 
various- {'neu': 1.0, 'compound': 0.0, 'pos': 0.0, 'neg': 0.0} 
scratches.-{'neu': 1.0, 'compound': 0.0, 'pos': 0.0, 'neg': 0.0} 
considerably- {'neu': 1.0, 'compound': 0.0, 'pos': 0.0, 'neg': 0.0} 
fast- {'neu': 1.0, 'compound': 0.0, 'pos': 0.0, 'neg': 0.0} 
android-- {'neu': 1.0, 'compound': 0.0, 'pos': 0.0, 'neg': 0.0} 
huge- {'neu': 0.0, 'compound': 0.3182, 'pos': 1.0, 'neg': 0.0} 
unbeatable- {'neu': 1.0, 'compound': 0.0, 'pos': 0.0, 'neg': 0.0} 

我想找到負值的所有的字段,方法,就像這樣:

0.0 
0.1 
0.0 
1.0 

我寫這個正則表達式,但它不工作:

exp=re.compile('neg'r':(\d).(\d)') 
+0

顯示你的代碼 – RomanPerekhrest

+0

它的唯一代碼的其餘部分。上述數據存儲在文本文件中。我試圖通過正則表達式讀取並傳遞文件的內容,但否定詞的值不打印或添加到列表中 –

+0

您知道語法高亮已經說了很多... –

回答

1

使用re.findall()功能:

import re 

with open('lines.txt', 'r') as fh: 
    contents = fh.read() 
    negs = re.findall(r"'neg':\s?(\d+\.\d+)\}", contents, re.M) 

其他方法來獲得具有負值的話:

neg_words = re.findall(r"^([-\w.]+)\s?\{[^{]+?(?='neg':\s?-\d+\.\d+\})", contents, re.M) 
+0

我如何打印有負值的詞? –

+0

@rajshastri,分別顯示一些示例 – RomanPerekhrest

+0

請考慮我上面提到的文本。現在我想要創建一個新文件,它只包含上面一段文字中的負面詞語,我該怎麼做?例如,假設列表中只有兩個詞是負數,即它們的「neg」值大於0.1,那麼我將如何提取這兩個詞? –