2012-03-16 27 views
14

ekleyerek char nasıl üretilir? C dilinde 'b' almak için 'a' + 1'i kullanabilirim, bu yüzden Python'da bunu yapmanın en uygun yolu nedir?
I like it yazabilirsiniz:python: int

chr(ord('a')+1) 

ama iyi yolu olup olmadığını bilmiyorum.

+4

o çalışacağız size 'en iyi' demek istiyorsunuz ne dizeleri uyardı – zmbq

+1

Python'da bir kodlama ile saklanır. Python 2.x'te, varsayılan kodlama bir tamsayı eklemenin sorun olmaması gereken ASCII'dir. Python 3.x'te, dizeler varsayılan olarak UTF8 unicode'dur. Unicode karakterlere bir tamsayı eklerken, 127'nin ötesindedir. http://docs.python.org/howto/unicode.html#the-unicode-type – shimofuri

+1

@shimofuri, python 3 dizeleri Unicode'dir. Utf-8 bir kodlamadır. – alexis

cevap

15

Evet, bu iyi yoludur Python otomatik olarak karakter ve yolu C ve C++ yapmak int arasında dönüştürmez

+0

Bir dönüşüm değil, aynı depolanmış bit kalıbı için farklı semantikler (tam sayı, karakter). – alexis

+1

Yine de, "bytearray" tipi var - ne karakterlerin değerlerine göre işlem yapmaları gerektiğinde oldukça kullanışlıdır. – jsbueno

7

Python aslında C aksine, bu yüzden evet, chr (ord bunu yapmak için bir yoldur, bir karakter türüne sahip değil.

Eğer daha temiz bunu biraz yapmak istiyorsa, gibi bir şey yapabileceğini :.

def add(c, x): 
    return chr(ord(c)+x) 
1

yaptığınız şey gerçekten doğru yoldur.. Python, C ve benzeri diller gibi, sayısal kod noktasıyla bir karakteri karıştırmaz. ASCII'nin ötesine geçtiğinizde, aynı integral değer kodlamaya bağlı olarak farklı karakterleri temsil edebilir. C, temeldeki donanım formatlarına doğrudan erişimi vurgular, ancak python iyi tanımlanmış semantikleri vurgular.

2

Python bytearray tipi vardır - düzenli dizeleri daha yavaştır, ama çoğunlukla bir C dize gibi davranır: Bu değişebilirdir , inidividual elemanları 0 yükseltmek acessing - 255 tamsayı numaraları, uzunluğu 1 ile alt dizeleri insetead, ve elemanlara atayabilirsiniz. Yine de, bir dizi olarak ifade edilmektedir, ve Python 2'de, bir dizi bir str nesnesine döküm olmadan birçok yerde olabilir kullanılabilir:

>>> text = bytearray("a") 
>>> text 
bytearray(b'a') 
>>> print text 
a 
>>> text[0]+=1 
>>> print text 
b 
>>> text[0] 
98 
>>> print "other_text" + text 
other_textb 

ByteArray içeriğini kullanmaya Python 3 kullanırken . bir metin nesnesi olarak, basitçe böyle "Latin1" veya utf-8" gibi uygun bir kodlama ile kod çözme yöntemini çağırın:?

>>> print ("other_text" + text.decode("latin1")) 
İlgili konular