2014-04-17 4 views
2

단락을 문장으로 분할하려고합니다. '.', '?'을 선택했습니다. 및 '!' 분할 기호로 사용합니다. 나는 시도 :문장을 단락으로 단락

format = r'((!)|(.)|(?))' 
delimiter = re.compile(format) 
s = delimiter.split(line) 

그러나 나는 또한

format = [r'(!)',r'(?)',r'(.)'] 
delimiter = re.compile(r'|'.join(format)) 

그것은 또한 오류가 발생

을 시도 sre_constants.error: unexpected end of pattern

나에게 제공합니다.

내 방법에 문제가 있습니까?

답변

6

. (와일드 카드) 및 ? (0 개 또는 하나의 한정 기호)은 특수한 정규식 문자이므로 문자 그대로 사용하려면 이스케이프 처리해야합니다.

그러나, 귀하의 경우는 (이 내부에 이러한 문자는 더 이상 특별하지 않은) 문자 클래스를 사용하는 것이 훨씬 간단 할 것 :의 "하나 개의 문자에 대한

split(r'[!.?] ') 

문자 클래스 [...] 스탠드 캐릭터 클래스 안에 포함 된 것 "이라고합니다.

+0

답장을 보내 주셔서 감사합니다. 제 경우에는 공간을 포함시킬 것입니다. (일반적으로 각 문장 다음에 공백이 생깁니다. 직접 인쇄 할 때마다 (i) 앞면에 공백이 있습니다. (ii)) "무슨 뜻이야?"메리가 한 문장 대신 두 문장으로 나뉘어 진다고 말했습니다. – ChuNan

+0

업데이트를 보았습니다. 그것은 작동합니다. 고마워요! 필요에 따라 3 분 안에 수락 할 것입니다. – ChuNan

+0

@ChuNan : 실제로 업데이트되었습니다. 기꺼이 도와 드리겠습니다. – Robin

관련 문제