당신 돈 문자열에 백 슬래시가 없습니다. 당신은 가지고 있지 않은 것을 제거 할 수 없습니다.
'\x82'
으로 표시 할 사항을 고려하십시오. 1 바이트 문자열입니다.
>>> s = '\x82'
>>> len(s)
1
>>> ord(s)
130
>>> hex(ord(s))
'0x82'
>>> print s
é # my sys.stdout.encoding is 'cp850'
>>> print repr(s)
'\x82'
>>>
'오히려'('x82'
)는 의미가 없습니다.
업데이트 (@
및 >
에 의해 제한) 문자열의 "비 ASCII"부분은 실제로 히라가나에 주로 쓰고 shift_jis
을 사용하여 인코딩 일본어 텍스트입니다. IDLE 세션의 대본 :
>>> y = '\x82\xb1\x82\xea\x82\xa9\x82\xe7\x8c\xa9\x82\xa6\x82\xe9\x82\xbe\x82\xeb\x82\xa4'
>>> print y.decode('shift_jis')
これから見えるだろう
Google 번역은 "미래를 볼 수 없습니까?"라는 영어 번역본을 제공합니다. 다른 답변에 단 댓글에서
, 당신은 말 :
난 그냥 아스키에게 내가보고있다 그것으로 뭘하는지
및
을 필요로하는지 멀리 떨어져 두 개의 문자열은 nltk.edit_distance()를 사용하고 있으므로 은 내게 사실의 배수를 부여합니다 거리 . 어느 것이 나를 위해 충분합니다.
왜 ASCII가 필요하다고 생각하십니까? 편집 거리는 알파벳과는 완전히 독립적으로 정의됩니다. 당신에게 진정한 거리의 일관 또는 예측 가능한 복수를 제공하지 않습니다 당신의 문자열의 무의미한 변환을하고 시작을 위해
. 둘째, 다음 중에서 :
x
repr(x)
repr(x).replace('\\', '')
repr(x).replace('\\x', '') # if \ is noise, so is x
x.decode(whatever_the_encoding_is)
왜 세 번째를 선택합니까?
업데이트 의견에 대 한 응답에서 2 :
(1) 당신이 "아스키"을 필요가 있다고 생각하는 이유 당신은 여전히 말했다하지 않았습니다. nltk.edit_distance은 "ascii"를 필요로하지 않습니다. args는 "문자열"(모든 것이 무엇이든간에)이라고하지만 코드는 !=
이 작동하는 객체의 2 시퀀스와 함께 작동합니다. 즉, 위의 5 가지 옵션 중 첫 번째 옵션을 사용하지 않는 이유는 무엇입니까?
(2) 편집 거리의 최대 100 % 인플레이션을 허용하는 것은 놀랍습니다. 현재 선택한 방법은 일본어 문자 당 4 개의 기호 (16 진수)를 사용합니다. repr(x)
은 문자 당 8 개의 기호를 사용합니다. x
(첫 번째 옵션)은 2를 사용합니다.
(3) 편집 거리를 표준화하여 인플레이션 효과를 완화 할 수 있습니다. distance(s1, s2)
을 number_of_symbols 임계 값과 비교하는 대신 distance(s1, s2)/float(max(len(s1), len(s2)))
을 소수 임계 값과 비교하십시오. 음표 정규화는 일반적으로 어쨌든 사용됩니다 ... 편집 거리가 4 인 20 개 기호 문자열 간의 차이는 편집 거리가 2 인 2 개가 아닌 10 개 기호 문자열 간 차이와 거의 같습니다.
(4) nltk.edit_distance는 내가 본 것 중 가장 놀랍게도 비효율적 인 순수 Python 구현 인 edit_distance입니다. This implementation by Magnus Lie Hetland은 훨씬 뛰어 났지만 여전히 개선 할 수 있습니다.
관련 : http://stackoverflow.com/questions/92438/stripping-non-printable-characters-from-a-string-in-python – icktoofay
정말 도움이되지 않습니다. 내 문자열에 ascii 문자 만 포함 시키길 원하지만 비 ASCII 문자를 완전히 스트라이프하지 않고 ASCII 리터럴로 만들고 싶습니다. –
내가 사용할 수있는 정규식 검색 문자열을 대단히 단순화하기 때문에 나는 ascii를 원한다. 나는 \ '[\ w \.] + \을 확인할 수 있으며,' ','> '또는'내 도메인 이름 정렬이 완료되면 무엇이 있는지 알기 때문에 완료됩니다. –