2017-01-26 6 views
1

私のtexteditor(vim)は文字列中の文字列の位置を与えることができますが、文字数ではなくバイト数を数えます。文字位置ではなく文字列内の文字列からバイト位置を見つける方法は?

例:

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

私は言葉apéritif私のテキストエディタは位置を与える検索:、
16:
16,25

Pythonは同じ単語のこの位置を与えると24

Vimは、エディタでPythonコードを実行するy。
私のpythonスクリプトの1つで、私はたくさんスライスします。
しかし、文字列にアクセント付きの文字がある場合、正しい単語を見つけることはありません。
これをPythonで解決する方法はありますか?
文字列のバイト位置をPythonの文字列で見つけることはできますか?

+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)

関連する問題