バイト文字列を行のリストに分割するにはどうすればよいですか?
Python2では次のようになりました。
rest = "some\nlines"
for line in rest.split("\n"):
print line
上記のコードは簡潔にするために簡略化されていますが、正規表現処理の後、バイト配列が入っているrest
ので、行を繰り返す必要があります。
バイト文字列を行のリストに分割するにはどうすればよいですか?
Python2では次のようになりました。
rest = "some\nlines"
for line in rest.split("\n"):
print line
上記のコードは簡潔にするために簡略化されていますが、正規表現処理の後、バイト配列が入っているrest
ので、行を繰り返す必要があります。
文字列に変換する理由はありません。split
バイトパラメータを与えるだけです。文字列を文字列で、バイトをバイトで分割します。
>>> a = b'asdf\nasdf'
>>> a.split(b'\n')
[b'asdf', b'asdf']
バイトをUnicode(str)にデコードしてから、次を使用しますstr.split
。
Python 3.2.3 (default, Oct 19 2012, 19:53:16)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> a = b'asdf\nasdf'
>>> a.split('\n')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: Type str doesn't support the buffer API
>>> a = a.decode()
>>> a.split('\n')
['asdf', 'asdf']
>>>
で分割することもできb'\n'
ますが、とにかくバイトではなく文字列を処理する必要があると思います。したがって、すべての入力データをstr
できるだけ早く変換し、コード内のUnicodeでのみ機能し、出力に必要なときにできるだけ遅くバイトに変換します。
これを試して.. 。
rest = b"some\nlines"
rest=rest.decode("utf-8")
それからあなたはすることができますrest.split("\n")