2017-07-10 171 views
0

我想提取文本中特定单词之间的文本。 例如:在python中找到特定单词之间的文本

my_list = ['w1 w2 w3 WW w6 w7 w8 WW w9 w10','w1 w2 WW w3 w4 WW w5 w6 w7 WW w8 w9 w10 w11 WW w12 WW w13'] 

所以我想提取WW和WW之间的单词每个句子。如果一个句子有两个WW,我的代码可以在它们之间提取单词,但是如果一个句子有两个以上的WW,例如上面例子中的第二个句子,我的代码就不能提取句子中其余的WW 。请参阅下面的代码:

word = 'WW' 

for sentence in my_list: 
    t_b = re.split(word + '|' + word, sentence , re.IGNORECASE) 
    word_between = [t_b[1].strip() for t_b[1] in t_b[1].split()] 

任何建议表示赞赏。非常感谢

+0

你想如何在字符串中处理两个以上的'WW'实例? –

回答

1
my_list = ['w1 w2 w3 WW w6 w7 w8 WW w9 w10','w1 w2 WW w3 w4 WW w5 w6 w7 WW w8 w9 w10 w11 WW w12 WW w13'] 
[ j.split() for j in sum([ i.split(' WW ')[1:-1] for i in my_list ], []) ] 

输出:

[['w6', 'w7', 'w8'], 
['w3', 'w4'], 
['w5', 'w6', 'w7'], 
['w8', 'w9', 'w10', 'w11'], 
['w12']] 
0

尝试使用分割内建功能:

my_list = ['w1 w2 w3 WW w6 w7 w8 WW w9 w10','w1 w2 WW w3 w4 WW w5 w6 w7 WW w8 w9 w10 w11 WW w12 WW w13'] 
my_list[1].split('WW') 

输出

['w1 w2 ', ' w3 w4 ', ' w5 w6 w7 ', ' w8 w9 w10 w11 ', ' w12 ', ' w13'] 
2

这是我如何解决它 - 而无需使用重,虽然。

my_list = ['w1 w2 w3 WW w6 w7 w8 WW w9 w10','w1 w2 WW w3 w4 WW w5 w6 w7 WW w8 w9 w10 w11 WW w12 WW w13'] 

for item in my_list: 
flag=0 
answer=[] 
for word in item.split(): 
    if word=="WW" and flag==0: 
     flag=1 
    elif word!="WW" and flag==1: 
     answer.append(thing) 
    elif word=="WW" and flag==1: 
     print answer 
     answer=[] 

我的输出

['w6', 'w7', 'w8']                                      
['w3', 'w4']                                        
['w5', 'w6', 'w7']                                      
['w8', 'w9', 'w10', 'w11']                                    
['w12']       
0

您可以找到索引,然后使用列表分片:

my_list = ['w1 w2 w3 WW w6 w7 w8 WW w9 w10','w1 w2 WW w3 w4 WW w5 w6 w7 WW w8 w9 w10 w11 WW w12 WW w13'] 

new_list = [[c for c, d in enumerate(i.split()) if d == "WW"] for i in my_list] 

new = [i.split() for i in my_list] 

final = [[b[a[i]:a[i+1]][1:] for i in range(len(a)-1)] for a, b in zip(new_list, new)] 

输出:

[[['w6', 'w7', 'w8']], [['w3', 'w4'], ['w5', 'w6', 'w7'], ['w8', 'w9', 'w10', 'w11'], ['w12']]] 
相关问题