2017-10-23 28 views
1

데이터 프레임이 있으며 특정 열의 고유 문자열이 필요합니다. 현은 히브리어로되어 있습니다.Python (히브리어)에서 오른쪽에서 왼쪽 문자 u200f를 제거하십시오.

팬더 데이터 프레임을 사용하고 있으므로 all_names = history.name.unique() (historyname 열이있는 데이터 프레임입니다.)이라고 썼습니다.

\u200f 문자로 이상한 중복이 나타납니다. ערן 나는 이러한 문자를 제거 할 수있는 방법 \u200f

all_names 
array(['\u200fערן', 'ערן', ...., None], dtype=object) 

또 다른 하나처럼?

답변

2

(원본 데이터 프레임에서) 당신은 취소 업 할 수 name 문자열이 아닌 모든 문자와 비 공백을 (유니 코드 현명한) 필터링하여 apply하여 name의 모든 값에 re.sub 기반 기능을 보내고 기둥.

는 (예를 들어, 유니 적절히 처리 파이썬 (3)을 가정)

>>> import re 
>>> history.name.apply(lambda s: s and re.sub('[^\w\s]', '', s)) 

\w includes all Unicode word characters (숫자 포함) 및 \s 모든 유니 공백 문자를 포함한다. 그런데

\u200f 당신을 괴롭히는 것은 "기타, 형식"유니 코드 코드 포인트 범주에 해당합니다 ( RIGHT-TO-LEFT MARK 일명) 그래서

>>> import unicodedata 
>>> unicodedata.name('\u200f') 
'RIGHT-TO-LEFT MARK' 
>>> unicodedata.category('\u200f') 
'Cf' 

, 당신이이 제거됩니다 확신 할 수 있습니다 위의 필터.