実際、
abcStr = "abcdefghijklmnopqrstuvwxyz"
ってガリガリ打ち込んで使うっていうのもあるにはありますが、
ちょっと悪手というか、避けたいというか、
なんか、そうじゃないよなあ、みたいな感じがあります。
二つの方法があると思います。
import string alphabetStr = string.ascii_lowercase # 大文字 string.ascii_uppercase # 数字 string.digits
逆順はこう
string.ascii_lowercase[::-1]
※ [::i] という書き方で「スライスステップ」になります。ここでは「マイナス方向に一個ずつ(ステップしない)」ので、結果的に文字列を一文字も抜かずに逆順、という操作になります
> http://docs.python.jp/2/library/stdtypes.html#str-unicode-list-tuple-bytearray-buffer-xrange の表の7行目「s[i:j:k]」の i と j を抜いた書き方。
リストでほしいとき
list(string.ascii_lowercase) # Result: ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'] #
またもう一つ。
unichr っていう組み込み関数を使うと、unicode番地から文字を得ることが出来ます。
print unichr(97) # -> a
与える数値に +1 していくと次の文字が得られるので、
これを活用すると連続した文字が得られます。
# アルファベット 小文字 def printAlphabetLower(): for i in range(0,26): print unichr(97+i) # アルファベット 大文字 def printAlphabetUpper(): for i in range(0,26): print unichr(65+i) # 数字 def printDigits(): for i in range(0,10): print unichr(48+i)
'a' が97、'A' が26、'0' が48です。
ちなみに、文字の番地を調べたい時はこちら
ord('a') # Result: 97 #( 'a' )のところがフグみたいですよね。いやマジで。
unichr()で得られるのはあくまで文字です。
数字であってももらったままでは文字列なので注意。例えば足し算しても、普通に文字列結合されます。
unichr(49) + unichr(49) # -> '1' + '1' 。2 じゃない! # Result: u'11' #
最後に、
これをC4Dで使ってみましたというごくアカデミックな実例。
import c4d from c4d import gui def getAlphabetUpper(): alphabetStr = '' for i in range(0,26): alphabetStr += unichr(65+i) return alphabetStr def main(): c4d.CallCommand(5178) # テキストオブジェクト作成 txtObj = doc.GetActiveObject() txtObj[c4d.PRIM_TEXT_TEXT] = str(getAlphabetUpper()) if __name__=='__main__': main()
一応内容について。
docオブジェクトのGetActiveObjectメソッドで、選択されているオブジェクトを取得。ここでは、直前に作成したテキストオブジェクトが得られます。
そいつの [c4d.PRIM_TEXT_TEXT] が属性エディタで言うところの“テキスト”欄につながってるので、そこに文字列を代入してあげると、こんなかんじ(▼)
……属性へのアクセスが [c4d.〜〜] なのは伝統なんですかね、もうちょいpythonicにならないものでしょうかMAXONさん……(^^^
また、
Cinema4DでのPythonについては
こちらの本でもちょっと触れていますので
http://circleqtvol3.tumblr.com
気になる方はぜひどうぞー
■ 参考
7.1. string — 一般的な文字列操作 @ Python » Documentation » Python 標準ライブラリ
http://docs.python.jp/2/library/string.html
unichr関数
http://docs.python.jp/2/library/functions.html#unichr
ord関数
http://docs.python.jp/2/library/functions.html#ord
0 件のコメント:
コメントを投稿