これは、1つの解決策である:それは最初mylist
にu'DT'
とu'IN'
のインデックスを見つける
idt = [item for item in range(len(mylist)) if mylist[item][1] == u'DT']
jdt = [item for item in range(len(mylist)) if mylist[item][1] == u'IN']
ij = zip(idt,jdt)
temp_list = [mylist[i[0]+1:i[1]] for i in ij]
new_list = [str(elem[0][0]+ ' ' + elem[1][0]) for elem in temp_list]
、それはタプル、ij
のリストにそれらを一緒にジッパー。各タプルは、プログラムが値を抽出するはずの区間の始まりと終わりです。値は、最初にmylist
に表示されるように抽出され、temp_list
に抽出されます。最後のステップは、に格納された抽出値を結合して処理するターゲットnew_list
を形成します。
このソリューションはあなたにカッコ()
内の値を与えるものではありません - それは、これを達成するためのようだ、new_list
の要素は、タプルになってなければならないのいずれか、すなわち('Satisfactory tracing',)
またはブラケットは、文字列'(Satisfactory tracing)'
の一部でなければならないであろう。
編集 - DT
とIN
の間の文字列の任意の数の液 - new_list
が同じになるまですべて、new_list
はtemp_list
のサブリスト内の各要素からの第1の要素を抽出し、1つの文字列にそれらを接合することによって形成される、
new_list = [((' ').join(map(lambda x: x[0], sub_el))) for sub_el in temp_list]
mylist = [('a', u'DT'), ('Satisfactory', u'JJ'), ('Satisfactory', u'JJ'),
('tracing', u'VBG'),('with', u'IN'),('a', u'DT'),('fairly', u'RB'),
('persistent', u'JJ'),('with', u'IN'), ('a', u'DT'),('persistent', u'JJ'),
('with', u'IN')]
利回り
とテスト0
['Satisfactory Satisfactory tracing', 'fairly persistent', 'persistent']
@engr_s結果の2番目の要素です。 '(かなり永続的です)' – Barmar
itertools.dropwhile()とitertools.takewhile()を試してみてください。 –