2011-11-21 43 views
14

arasındaki fark biraz kafam karışık. Python'da ikili dize, bayt dizesi, unicode dizgi ve düz eski dize (str) arasındaki fark nedir? Python 2.6 kullanıyorum.İkili dize, bayt dizesi, unicode dizesi ve sıradan bir dize (str)

+1

Python 2 veya Python 3'ü kullanıp kullanmadığınızı belirtmeniz gerekir çünkü bu büyük bir fark yaratır. –

+1

Hangi Python sürümünü kullanıyorsunuz? Python bağlamında "ikili dizgeyi" ile nerede karşılaştın? –

+0

@JohnY Soruyu güncelledim. –

cevap

18

Kullandığınız Python sürümüne bağlıdır.

Python 2.x'te 'abc' yazıyorsanız, str yazıyor, ancak bu bir bayt dizesi demektir. Bir Unicode dizgisi istiyorsanız, u'abc' yazmalısınız.

Python 3.x'te 'abc' yazıyorsanız, hala str yazıyor, ancak şimdi bu bir Unicode karakter dizesidir. Bir bayt dizgisi istiyorsanız, b'abc' yazmalısınız. u'abc' yazmasına izin verilmiyor.

+0

Bunun için teşekkürler. Sadece düzgün bir şekilde anladığım için, temel olarak bir bayt dizgisi ile sıradan bir dizge arasındaki fark, bayt dizesinin unicode karakter içermemesidir. –

+2

@Imran Azad: Bayt dizesini, düzenli bir bayt listesi olarak düşünebilirsiniz; bu, 0 ile 255 arasında tam sayıdır. Bir Unicode dizesi, Unicode karakterlerinin (harfler, sayılar, noktalama işaretleri, küçük kardan adamlar (☃), vb.) Sıralı bir listesidir. Sanırım kafa karışıklığı, Python 2.x'ten bayt dizgileri karakter dizisi gibi davranıyor. Neredeyse çalışır, ASCII aralığının dışındaki karakterleri kullanmaya başladığınız durumlar dışında, sorun yaşarsınız. –

+0

Ah, teşekkürler. –