이것은 하나의 해결책이다
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]
첫 mylist
의 u'DT'
및 u'IN'
의 인덱스를 찾는, 그때는 튜플들의 목록 ij
에 이들을 함께 참아. 각 튜플은 프로그램이 값을 추출하기로되어있는 간격의 시작과 끝입니다. 값은 mylist
에 표시된대로 temp_list
으로 먼저 추출됩니다. 마지막 단계는 에 저장된 추출 값을 조인하고 처리하는 대상 new_list
을 형성합니다.
이 솔루션은 당신에게 괄호 ()
내에서 값을 제공하지 않습니다 - 그이를 것으로 보인다 new_list
의 요소, 튜플로 전환해야 할 것 중 하나 즉 ('Satisfactory tracing',)
또는 브래킷 문자열 '(Satisfactory tracing)'
의 일부가 될 것이다.
수정 - DT
및 IN
사이 문자열의 수를위한 용액 - new_list
이 동일 할 때까지 모든 것을 new_list
가 temp_list
의 하위 목록의 각 요소에서의 첫 번째 요소를 추출하고, 하나의 문자열로 접합하여 형성되어
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 결과의 두 번째 요소입니다.'(상당히 영구적입니다. ') – Barmar
itertools.dropwhile() 및 itertools.takewhile()을 사용해보십시오. –