我正在尝试在文本中的特定单词之间提取文本。 例如:
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()]
任何建议表示赞赏。非常感谢
答案 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']]]