2017-03-16 21 views
-1

私はバイトをutf-16文字列に変換するプログラムを作成しています。しかし、後ろに0があり、文字列が次のように終わってしまうことがあります。 "これは私の文字列x00\x00\x00"です。最初の文字が\x00になると文字列をトリミングしたいのですが、末尾の0を示す文字はx00です。 pythonでこれを行う?特定の文字の後のpython文字の切り抜き

を私の問題は、トリム()が完全に機能していないため、コメントにリンクされ、別の質問の重複はありません。私は、ある文字列を持っている場合は、「これはこんにちはx00\x00"私はちょうどたいx00\x00私の文字列です。 "これは私の文字列です"一方、 "これは私の文字列です。"

+0

ようこそ、何を試しましたか?コードを見せてくれますか? – jmugz3

+0

[strip](https://docs.python.org/2/library/string.html#string.rstrip)が好きなように聞こえます – Shadow

+0

[[Pythonで文字列をトリミングする]]の可能な複製(http://stackoverflow.com/questions/761804/trimming-a-string-in-python) – Shadow

答えて

0

index('\x00')を使用して、最初のヌル文字のインデックスを取得し、その文字列をインデックスまでスライスします。

mystring = "This is my string\x00\x00\x00hi there\x00" 
terminator = mystring.index('\x00') 

print(mystring[:terminator]) 
# "This is my string" 

また、NULL文字にsplit()を指定することもできます。

print(mystring.split(sep='\x00', maxsplit=1)[0]) 
# "This is my string" 
+0

あなたが提供したコードの2番目の部分が機能しました!本当にありがとう。 – user7683274

0

strip()の機能を使用すると、不要な文字を削除することができます。例:

a = 'This is my string \x00\x00\x00' 
b = a.strip('\x00') # or you can use rstrip() to eliminate characters at the end of the string 
print(b) 

出力としてThis is my stringが表示されます。

+0

私の例の問題は、「This is my string x00 \ x00 \ x00 \ hi there \ x00 \ x00」のような文字列がある可能性があるということです。 出力は「これは私です文字列 "です。 私はstrip()を使用しましたが、このエッジケースは私を捨てています。 – user7683274

+0

これを試してください: 'b = a [0:a.find( '\ x00')]' – LuCima

関連する問題