2015-06-19 70 views
0

我有以下文字:在文本文件中的多個關鍵字之前,插入新行

「這就是問題從這個文件中提取一些數據 文字是我所期待的不是真正發生的事情。」

我能夠多個關鍵字後插入新行:

import fileinput 
for line in fileinput.input('text.txt', inplace=1): 
    print line, 
    if line.startswith(('Extract', 'Text')): 
     print ' ' 

但我不能找到的關鍵字之前還加入了新行的解決方案。

最終格式應該是這樣的:

「這就是問題

從這個文件中提取一些數據

文字是我所期待的不是真正發生的事情。」

問題是,所有的單詞都可以改變,但關鍵字。我正在尋找編輯任何包含關鍵字的文字。

感謝您的建議。

+0

...什麼?你期望發生什麼? – jonrsharpe

+0

這可能會給出關於打印和使用逗號的解釋:http://stackoverflow.com/a/18179618/4019425 – Ignotus

回答

0

你的意思是:

import fileinput 
for line in fileinput.input('text.txt', inplace=1): 
    if line.startswith(('Extract', 'Text')): 
     print '\n'+line+'\n'  
    else:  
     print line 

+0

非常感謝!這工作完美! – Diego

0

正則表達式的子功能會得到你想要的東西:

import re 
keywords_regex = r"(Extract)|(Text)" 
line = re.sub(keywords_regex, "\n\1", line) + "\n" 

但首先你必須將您輸入的文本拆分成其各自的句子。你可以這樣做:

import re 
lines = text.split(". ") 

# replace the removed periods 
lines = [line + "." for line in lines] 

keywords_regex = r"(Extract)|(Text)" 
lines = [re.sub(keywords_regex, "\n\1", line) + "\n" for line in lines] 

「\ 1」是正則表達式「第一個匹配的組」。

+0

謝謝你的替代解決方案。 – Diego

相關問題