2016-11-06 3 views
0

프로그래밍을 처음 사용합니다. 이 사이트와 Google을 검색했지만이 문제를 해결할 수 없습니다. 나는 비슷한 주제를 찾고 있지만 여전히 이것을 이해할 수는 없습니다 ...특정 단어를 제외하는 단어를 찾는 파이썬 정규식

나는 매우 큰 단어 목록을 포함하는 텍스트 파일을 가지고 있습니다. 단어는 모두 번호가 매겨지며 '명사', '형용사'또는 '동사'로 분류됩니다.

이 목록에서 단어를 추출하고 싶지만 숫자와 'noun', 'adjective'및 'verb'의 세 단어는 제외하십시오.

캐럿 문자를 사용해야하지만 작동하지 않는 것 같습니다.

[^a-z](?!noun|adjective|verb)([a-z]+) 
+0

"나는 캐럿 문자를 사용할 필요가 알고 ..."당신이 그것을 읽은 때문에 : – usr2564301

답변

1
import re 

with open('wordList.txt') as f: 
    for line in f: 
     if re.search("^(?!noun|adjective|verb|\d)", line): 
      print(line) 
0

import re 
import os 

textFile = open('/Users/MyComputer/wordList.txt') 

textFileContent = textFile.read() 

wordFinder = re.compile(r""" 
[a-z]+ # finds words 
[^noun|adjective|verb] # THIS IS WRONG 
""", re.VERBOSE | re.I) 

regexResults = wordFinder.findall(textFileContent) 
난 당신이 정규식 표현을 줄 수있는 negative look-ahead 사용하는 것이 좋습니다 논리적 인`not`, 맞습니까? 하지만 캐릭터 클래스를 무효화하는 것만 가능합니다. 당신은 그것을 "n, not o, u, pipe가 아닌"등등으로 확인했습니다. 그러나이 문자들 중 오직 하나만을 검사했습니다. '단어'에서는 작동하지 않습니다.
관련 문제