文字列を1文字ずつ処理する
Pythonクックブックを読みながら、IronPythonで色々お試し。
import clr from System import Convert,IConvertible for c in 'Hello': print c.GetType(), ord(c) """ System.String 72 System.String 101 System.String 108 System.String 108 System.String 111 """ for c in 'Hello'.Chars: print c.GetType(), ord(c), Convert.ToInt16(c), IConvertible.ToInt16(c, None) """ System.Char 72 72 72 System.Char 101 101 101 System.Char 108 108 108 System.Char 108 108 108 System.Char 111 111 111 """
Pythonでは「文字」という型は存在せず、文字は長さ1の文字列として表現されます。なので、もし、.NETライブラリでchar型を要求される場合は、Charsプロパティを使うと良いです。あと、落とし穴ですがPythonは基本的に型を意識しないため、.NETにおける明示的なインタフェースなどを使う場合、そのまま呼び出せず、上記サンプルにあるように、
インタフェース.メソッド(インスタンス,引数)
と書かなければなりません。ただ、将来的には変更されるかもしれません。
ところで、CPythonとIronPythonで異なる文字列型を持っていますが、それについては上手く整合性を取っていますが、CPythonのunicode文字列(u'文字列')は上手く扱えてない気がします。弄ってて首をかしげる場面が何度か・・・