SORU
28 EYLÜL 2011, ÇARŞAMBA


En iyi Python 3 bayt dize dönüştürmek için bir yol?

TypeError: 'str' does not support the buffer interface cevaplar görülen bayt için bir dize dönüştürmek için iki farklı yol gibi görünüyor

Bu yöntem daha iyi ya da daha Pythonic olurdu? Yoksa sadece kişisel bir tercih meselesi mi?

b = bytes(mystring, 'utf-8')

b = mystring.encode('utf-8')

CEVAP
28 EYLÜL 2011, ÇARŞAMBA


bytes, dokümanlar bakarsanız bytearray işaret:

([source [kodlama [hatalar]]]) bayt

Bayt yeni bir dizi döndürür. Ham tip aralığı 0 < tamsayı bir değişken dizisi;= x &; 256. lt Değişken diziler, bir Değişken Dizisi Türleri, yanı sıra bayt türüne sahip en yöntemleri açıklanan olağan yöntemlerin çoğu, Bayt ve Byte Dizisi Yöntemleri bakın.

İsteğe bağlı kaynak parametre birkaç farklı şekillerde: diziyi başlatmak için kullanılabilir

Eğer bir dize ise, bu bir kodlama (ve isteğe bağlı olarak, hatalar) parametreleri; başladıktan vermelisiniz() dönüştürür byte str kullanarak dize.() kodlayın.

Eğer bir tamsayı ise, dizinin bu büyüklükte olacak ve null bayt ile başlatılır.

Eğer bir nesne tampon arayüzü uygun ise, nesnenin salt okunur bir bayt dizisi başlatmak için kullanılır.

Eğer bir iterable ise, bu aralıktaki tamsayıların bir iterable 0 < olmalı;= x < dizinin ilk içeriği olarak kullanılan; 256,.

Bir bağımsız değişken olmadan, boyut 0 bir dizi oluşturulur.

bytes sadece bir dize kodlamak çok daha fazlasını yapabilir. Sana mantıklı kaynak parametresi herhangi bir tür kurucu aramak için izin verecek, bu Pythonic.

Kodlama için bir dize, bence O some_string.encode(encoding) Daha Pythonic kullanarak daha yapıcı, çünkü en çok kendini belgeleyen -- "al bu dize kodlamak ve bu kodlama" daha net daha bytes(some_string, encoding) -- orada açık bir fiil kullan yapıcı.

Düzenleme:Python kaynak kontrol ettim. Geçersen bir unicode dize bytes kullanarak CPython, aramalar PyUnicode_AsEncodedString hangi uygulama encode; yani sen atlama düzeyde yönlendirme çağrısı encode kendinizi.

Ayrıca,' yorum -- unicode_string.encode(encoding) ters byte_string.decode(encoding) ve simetri güzel olduğu için de daha Pythonic. Serdalis bakın

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Harvest: Greg Laurie

    Harvest: Gre

    6 HAZİRAN 2006
  • hotstrikegently

    hotstrikegen

    26 AĞUSTOS 2011
  • RealPapaPit

    RealPapaPit

    16 Mart 2009