在python中查找特定单词之间的文本

时间:2017-07-10 16:00:34

标签: 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,如上例中的第二个句子,我的代码无法提取句子中其余部分的单词。请参阅以下代码:

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()] 

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

4 个答案:

答案 0 :(得分:2)

这是我如何解决它 - 但不使用re。

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']                         

答案 1 :(得分: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']]

答案 2 :(得分:0)

尝试使用split builtin函数:

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']

答案 3 :(得分: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']]]