2013-11-09 85 views
0

我有一個文本文件,我的目標是生成一個包含兩個特定單詞之間的所有單詞的輸出文件。grep從文本文件中的單詞範圍python

舉例來說,如果我有這樣的文字:

askdfghj... Hello world my name is Alex and I am 18 years all ...askdfgj. 

我想獲得「我」和「亞歷克斯」之間的所有的話。

輸出:

my name is Alex 

我有一點......但我不知道如何創建範圍:

if 'my' in open(out).read(): 
     with open('results.txt', 'w') as f: 
      if 'Title' in open(out).read(): 
       f.write('*') 
     break 

我想用一句話輸出文件「我的名字是亞歷克斯「。

回答

2

你可以在這裏使用regex

>>> import re 
>>> s = "askdfghj... Hello world my name is Alex and I am 18 years all ...askdfgj." 
>>> re.search(r'my.*Alex', s).group() 
'my name is Alex' 

如果字符串包含多個Alexmy之後,你只想要最短的匹配,然後使用.*?

隨着?

>>> s = "my name is Alex and you're Alex too." 
>>> re.search(r'my.*?Alex', s).group() 
'my name is Alex' 

?

>>> re.search(r'my.*Alex', s).group() 
"my name is Alex and you're Alex" 

代碼:

with open('infile') as f1, open('outfile', 'w') as f2: 
    data = f1.read() 
    match = re.search(r'my.*Alex', data, re.DOTALL) 
    if match: 
     f2.write(match.group()) 
+0

感謝它的工作原理太! – userbio

0

您可以使用正則表達式my.*Alex

data = "askdfghj... Hello world my name is Alex and I am 18 years all ...askdfgj" 
import re 
print re.search("my.*Alex", data).group() 

輸出

my name is Alex 
+0

感謝它的工作! – userbio

+0

@userbio歡迎您:) – thefourtheye

相關問題