2012-03-16 6 views
14

私は 'a' + 1を使って 'b'をC言語にすることができます。そのため、Pythonでこれを行うにはどのような便利な方法がありますか?
私は好きなことを書くことができます:python:intを追加してcharを生成する方法

chr(ord('a')+1) 

が、私はそれが最善の方法であるかどうかわかりません。

+4

それがうまくいくあなたが 『最良』とはどういう意味ですかその文字列を注意して – zmbq

+1

Python 3.xでは、デフォルトでは文字列はUTF8のUnicodeです。 Unicode文字が127を超えてオーバーフローした場合に、整数をUnicode文字に追加する際には、整数を追加する必要があります。http://docs.python.org/howto/unicode.html#the-unicode-type – shimofuri

+1

@shimofuri、python 3文字列はUnicodeです。 Utf-8はエンコーディングです。 – alexis

答えて

15

はい、これが最善の方法であるPythonは自動的に文字や道のCおよびC++はやるint型の間で変換しません

+0

これは変換ではなく、同じ格納されたビットパターンの異なるセマンティクス(整数、文字)です。 – alexis

+1

しかし、 "bytearray"型があります。文字がその値によって操作される必要があるときは非常に便利です。 – jsbueno

7

Pythonは実際にCとは異なり、文字の種類を持っていないので、いや、CHR(ORDはそれを行う方法である。

あなたがもう少しきれいにそれをやってみたかった場合は、あなたのような何かを行うことができます:。

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

あなたがやっていることは本当に正しい方法です。 Pythonは、Cやそれに類する言語のように、数値コードポイントと文字を組み合わせません。一度ASCIIを超えると、同じ整数値はエンコーディングに応じて異なる文字を表すことができます。 Cは基本的なハードウェアフォーマットへの直接アクセスを強調しますが、Pythonは明確なセマンティクスを強調します。 Pythonでbytearray種類があり

2

- それは、通常の文字列よりも遅いですが、ほとんどC文字列のように振る舞う: - 、255整数、な長さ1とサブストリングのinsetead それは可変であるが、アクセスしてるinidividual要素は0を上げます要素に割り当てることができます。依然としてSTRオブジェクトにキャストされずに文字列をすることができ、それが文字列として表現され、とPython 2に、ほとんどの場所で使用することができる。

>>> 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の内容を使用するためにはPython 3を使用する場合テキストオブジェクトとして、単に、そのような「latin1の」またはUTF-8" などの適切なエンコーディングとのdecodeメソッドを呼び出します。?

>>> print ("other_text" + text.decode("latin1"))