this topic의 확장 질문입니다. 나는 "w"다음의 키워드 시리즈와 같은 전체 문자열과 부분 문자열에서 검색하려는 :팬더 및 "다시"- 전체 및 부분 문자열 검색
rigour*
*demeanour*
centre*
*arbour
fulfil
이것은 분명히 내가 태도 도중에 엄격하고 엄격 의, 같은 단어를 검색하고 싶어하고 있음을 의미 태도 , 중심 및 중심 , h 아버 및 아버 등을 만족시킨다. 따라서 내가 가지고있는 키워드 목록은 찾을 수있는 전체 및 부분 문자열을 혼합 한 것입니다. 다음
ID;name
01;rigour
02;rigours
03;endemeanour
04;endemeanours
05;centre
06;centres
07;encentre
08;fulfil
09;fulfill
10;harbour
11;arbour
12;harbours
내가 지금까지 뭘하려 : 다음
r = re.compile(r'.*({}).*'.format('|'.join(w.values)), re.IGNORECASE)
나는 DataFrame를 필터링 마스크를 구축했습니다 :이 DataFrame "안양"에 대한 검색을 적용 할 것
을 키워드에 새 열을 얻기 위하여mask = [m.group(1) if m else None for m in map(r.search, df['Tweet'])]
결과 :
df['keyword'] = mask
,536,913 이 *없는 w 목록을 사용하여 작동 ID;name;keyword
01;rigour;rigour
02;rigours;rigour
03;endemeanour;demeanour
04;endemeanours;demeanour
05;centre;centre
06;centres;centre
07;encentre;None
08;fulfil;fulfil
09;fulfill;None
10;harbour;arbour
11;arbour;arbour
12;harbours;None
: 내가 기대하고있어 무엇
는 다음과 같은 결과 DataFrame입니다. 이제 re.compile 함수를 올바르게 실행하기 위해 * 조건이있는 단어 목록의 키워드를 포맷하는 데 몇 가지 문제가있었습니다.
도움이 될 것입니다. 정규식에서 *
가 자체적으로 작동하지 않는 것을 후에가는 것을
rigour.*
.*demeanour.*
centre.*
\\b.*arbour\\b
\\bfulfil\\b
참고 :
여기
은 정규식 당신에게 필요한 결과를 제공하기 위해 같이하는 방법입니다 고마워요! 하나의 질문입니다. 엄격함과 센터의 차이점은 무엇입니까? 끝에 ". *"부분이 있어야합니까? –
잘 보입니다. 그렇습니다, 그들은 같은 결말을 가져야합니다'. *'. 이 오타를 수정했습니다. – Primer
고마워. 긴 문자열을 검색 할 때조차도 새로운 '키워드'열을 올바르게 가져 오려면 map에있는 m에 대해 'mask = [m.group (1) if else none]을 사용하는 것이 좋습니다.search, df [ 'name'])]''df [ 'Keyword'] = mask'는 각 문자열에있는 올바른 키워드를 반환해야합니다. –