2013-03-13 2 views
0

텍스트 문자열을 정규화하고 싶습니다. 그런 이유로 구두점과 비 알파벳 문자 (이모티콘을 구분하지 않음)를 유지하려고하지만 동시에 두 알파벳 문자와 알파벳이 아닌 문자 사이에 빈 공간을 만듭니다. 예를 들어 다음 문자열 :이 할 수있는 정규식 포함을 쓸 수있는 방법을RegEx- 알파벳이 아닌 문자와 문자열의 알파벳 문자 사이에 공백을 두는 방법

"* I love u *" 
"Hi , life is great :) hehe" 
"I will go to uni . cul" 

당신이 말해 주 시겠어요 :

"*I love u*" 
"Hi, life is great:)hehe" 
"I will go uni.cul" 

가로 변환해야 하는가? 미리 감사드립니다.

답변

4

당신은이 표현의 일치를 대체 할 수

(?<=[^\w\s])(?=\w)|(?<=\w)(?=[^\w\s]) 

을 공간 와 함께. 예를 들어

:이 또한 필요하지 공백을 추가 할 것을

re.sub(r'(?<=[^\w\s])(?=\w)|(?<=\w)(?=[^\w\s])', ' ', str) 
+0

@ user823743, 답변을 업데이트했습니다. 표현식을 인용해야합니다. – Qtax

+0

답변 해 주셔서 감사합니다. – user823743

2

이 시도 :

x = '''*I love u* 
    Hi, life is great:)hehe 
    I will go uni.cul''' 

def rep(matchobj): 
    return ' ' + matchobj.group(0) + ' ' 

print re.sub('[^a-zA-Z0-9\s]+', rep, x).strip() 
+0

참고. 공백 주위, 스팅의 시작/끝과 비슷합니다. – Qtax

+0

잘 들어,이 문제를 해결하기 위해 내 대답이 업데이트되었습니다. 당신의 대답은 훨씬 깨끗합니다. – woemler

+0

+1, 답변 해 주셔서 감사합니다. – user823743

관련 문제