2016-10-06 3 views
-1

나는이 문제로 내 기지 근처에 있습니다. 기본적으로 단어 사이에 이중 공백을 제거해야합니다. 내 프로그램은 히브리어로 될 일이 있지만, 이것은 기본적인 생각이다 : 처음 두 단어 사이에 여분의 공간이 (Herbew가 오른쪽에서 왼쪽으로 읽는)가Python이 공백 문자를 식별하지 않습니다.

TITLE: הלכות ‏ ‏השכמת‏ ‏הבוקר‏ 

알 수 있습니다.

나는 많은, 많은 다른 방법을 시도, 여기에 몇 가지 :

# tried all these with and without unicode 
title = re.sub(u'\s+',u' ',title.decode('utf-8')) 
title = title.replace(" "," ") 
title = title.replace(u" הלכות",u" הלכות") 

마지막까지 나는 매우 불필요한 방법을 만들기 위해 의지 (붙여 넣을 때 서식의 일부가 엉망있어) :

def remove_blanks(s): 
    word_list = s.split(" ") 
    final_word_list = [] 
    for word in word_list: 
     print "word: " +word 
     #tried every qualifier I could think of... 
     if not_blank(word) and word!=" " and True != re.match("s*",word): 
      print "^NOT BLANK^" 
      final_word_list.append(word) 
    return ' '.join(final_word_list) 

def not_blank(s): 
    while " " in s: 
     s = s.replace(" ","") 
    return (len(s.replace("\n","").replace("\r","").replace("\t",""))!=0); 

그리고 나의 완전한 놀랍게도, 이것은 내가 돌아 왔을 것입니다 :

word: הלכות 
^NOT BLANK^ 
word: ‏   #this should be tagged as Blank!! 
^NOT BLANK^ 
word: ‏השכמת‏ 
^NOT BLANK^ 
word: ‏הבוקר‏ 
^NOT BLANK^ 

그래서 응용 프로그램 arently 내 한정어가 작동하지 않았다. 여기서 무슨 일이 일어나고있는거야?

+1

단어의'repr'을 출력하면 어떻게됩니까? 'print '단어 : ", repr (word)'? 유니 코드 공간이있을 수 있습니다 (예 : [ 'NO-BREAK SPACE'] (http://www.fileformat.info/info/unicode/char/00a0/index.htm) – mgilson

+0

공백 사이에 최소한 하나의 보이지 않는 문자가 있습니다. 나는 그 성격이 무엇인지 모르지만 그것은 혼란의 원인입니다. – user2357112

+2

붙여 넣기 된 콘텐츠를 믿을 수있는 경우 [오른쪽 - 표시 - 정보 표시] (http://www.fileformat.info/info/unicode/char/200f/index.htm)가 너의 공간. – mgilson

답변

0

왼쪽 -> 오른쪽 마크가 \ xe2 \ x80 \ x8e 숨어 있습니다. repr (단어)를 사용하여 그것을 발견했습니다. 감사합니다 @ mgilson!

관련 문제