2011-02-08 5 views
1

MP3 태그에서 노래의 아티스트를 읽은 다음 그 이름을 기반으로 폴더를 만듭니다. 내가 가진 문제는 이름에 'AC \ DC'와 같은 특수 문자가 들어있을 때입니다. 그래서 나는 이것을 처리하기 위해이 코드를 작성했습니다.python : 문자열의 특수 문자 바꾸기

def replace_all(text): 
    print "replace_all" 
    dictionary = {'\\':"", '?':"", '/':"", '...':"", ':':"", chr(148):"o"} 

    for i, j in dictionary.iteritems(): 
     text = text.replace(i,j) 

    return text 

은 내가 지금으로 실행하고하는 모터 헤드 또는 블루 오이스터 컬트의 umlaout 오 같은 영어 이외의 문자를 처리하는 방법입니다. 보시다시피

나는 사전의 끝에서 umlaout 오의 아스키 문자열 버전을 추가하는 시도하지만 내가 모두 입력 텍스트를 유니 코드를 사용하는 것이 좋습니다와 문자를 교체

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 4: ordinal not in range(128) 
+1

http://farmdev.com/talks/unicode/ –

+0

참조 http://stackoverflow.com/questions/3833791/python-regex-to-convert-non-ascii-characters-in-a-string- 좀 더 일반적인 해결책을 논의하기 위해 가장 근접한 ascii에 상응하는 것. – Mikel

+0

@Ignacio 그건 훌륭한 링크입니다! 그것은 많은 도움이되었습니다. – ccwhite1

답변

3

나는 그것을 이해하지 않지만이 코드를 발견했습니다.

def strip_accents(s): 
    return ''.join((c for c in unicodedata.normalize('NFD', s) if unicodedata.category(c) != 'Mn')) 

제안 된 dir/filenames의 경로에서 악센트 부호를 제거 할 수있었습니다.

+0

도 아니고 이해합니다 - 우수한 pythoness 조각 –

0

실패했습니다. 귀하의 예에서 chr(148)은 분명히 유니 코드 기호가 아닙니다.

+0

그래서 유니 코드 문자가있는 문자열을 유니 코드로 설정하려면 어떻게해야합니까? 그런 다음 문자열의 비 유니 코드 문자로 변경합니까? – ccwhite1

+0

ISO-8859-1 또는 UTF-8과 같은 특정 인코딩에 간단한 문자열 (바이트/이진 문자열)이있을 수 있습니다. 다음과 같이 인코딩에서 파이썬의 유니 코드 데이터 유형으로 디코딩해야합니다 :'utext = text.decode ('utf-8')'. –