2017-01-26 1 views
1

내 texteditor (vim)는 문자열에서 문자열의 위치를 ​​지정할 수 있지만 문자의 수가 아니라 바이트 수를 계산합니다.문자 위치가 아닌 문자열의 문자열에서 바이트 위치를 찾는 방법은 무엇입니까?

예 :
16,25

파이썬이 같은 단어의 위치를 ​​제공합니다 : 나는 단어를 검색 할 때 apéritif 내 문서 편집기가 위치 제공

s="I don't take an apéritif après-ski" 


빔은 y는 편집기에서 파이썬 코드를 실행합니다.
파이썬 스크립트 중 하나에서 조각을 많이합니다.
그러나 문자열에 악센트 부호가있는 문자가 있으면 정확한 단어를 찾지 못합니다.
이 문제를 해결할 수있는 방법이 있습니까?
파이썬에서 문자열의 바이트 위치를 문자열로 찾을 수 있습니까?

+1

나는 그것을하려고이 글을 읽고 인코딩 문제라고 생각 http://stackoverflow.com/a/6539952/3868511 –

답변

2

이것은 분명히 순진한 해결책입니다. 텍스트와 단어를 모두 바이트로 인코딩 한 다음 인코딩 된 텍스트를 매개 변수로 사용하여 인코딩 된 텍스트에서 find() 연산을 실행할 수 있습니다.

def f(text,word): 
    en_text=bytes(text,encoding="utf-8") 
    en_word=bytes(word,encoding="utf-8") 
    start = en_text.find(en_word) 
    return (start,start+len(en_word)) 

로 실행하면 :

f("I don't take an apéritif après-ski","apéritif") 

반환 (16, 25)

관련 문제