RubyやPerlなどの文字列と概ね同じ感覚で扱えますが、細かい点では様々な違いがあります。
例えば、シングルクォーテーションであってもエスケープシーケンスが使用できます。
sample.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
print 'line1\nline2' # シングルクォーテーションであってもエスケープシーケンスが有効
print r'line1\nline2' # 'r'を付ける (Raw文字列化) ことで無効化可能 (Perlのシングルクォーテーション化)
実行例
$ python sample.py
line1
line2
line1\nline2
ダブルクォーテーションまたはシングルクォーテーションを三つ並べることで、多言語でいうところのヒアドキュメントのような、複数行に渡る文字列を記述できます。
sample.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
docstr = """
Here is some documents describing
the usage of this function.
"""
print docstr
出力例
$ python sample.py
Here is some documents describing
the usage of this function.
シーケンスの一部を切り出します。C言語などのfor文と対応付けて考えると理解がしやすいかもしれません。
sample.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
string = "This is a string."
print string[:4] # for(int i=0; i<4; ++i)
print string[:-1] # for(int i=0; i<string.size()-1; ++i)
print string[1:4] # for(int i=1; i<4; ++i)
print string[1:] # for(int i=1; i<string.size(); ++i)
print string[1::2] # for(int i=1; i<string.size(); i+=2)
print string[::2] # for(int i=0; i<string.size(); i+=2)
print string[3:0:-1] # for(int i=3; i>0; --i)
print string[::-1] # for(int i=string.size()-1; i>=0; --i)
出力例
$ python sample.py
This
This is a string
his
his is a string.
hsi tig
Ti sasrn.
sih
.gnirts a si sihT
sample.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
x = 123
y = "123"
print x + int(y)
print x + float(y)
print str(x) + y
出力例
$ python sample.py
246
246.0
123123
Pythonの文字列はPerlやRubyと異なり変更ができません。replaceメソッドを用いるなどして、新たな文字列オブジェクトを生成することで対処します。
sample.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
s = "This is a string."
# s[0] = 't' # エラー
s = s.replace('This', 'this')
print s
出力例
$ python sample.py
this is a string.
C言語などのsprintfに相当する記述もできます。
sample.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
print "%d + %d = %d, %s" % (1, 1, 2, 'is this ok?')
# ディクショナリを使用した例
print "%(val1)d + %(val1)d = %(val2)d, %(str)s" % {'val1':1, 'val2':2, 'str':'is this ok?'}
出力例
$ python sample.py
1 + 1 = 2, is this ok?
1 + 1 = 2, is this ok?
Python 2.6 からは format 関数が利用できます。
In [9]: '{} + {} = {}'.format(1.0, 1, '2?')
Out[9]: '1.0 + 1 = 2?'
In [10]: '{myfloat} + {myint} = {mystr}'.format(myfloat=1.0, myint=1, mystr='2?')
Out[10]: '1.0 + 1 = 2?'
print '-'.join("string")
出力例
s-t-r-i-n-g
print "This is a string".find('his')
出力例
1
print "This is a string".split() # デフォルトでは空白で区切る
print "This,is,a,string".split(',')
出力例
['This', 'is', 'a', 'string']
['This', 'is', 'a', 'string']
print "This is a string.".upper()
print "This is a string.".lower()
出力例
THIS IS A STRING.
this is a string.
print len(" 123 \n".rstrip()) # right strip
print len(" 123 \n".strip())
出力例
4
3
'abc'.startswith('ab')
'abc'.endswith('bc')
pythonで正規表現を使用するためには、reモジュールをインポートする必要があります。
sample.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
from re import compile as regexcompile
prog = regexcompile('/(.*)/(.*)/(.*)')
match = prog.match('/usr/bin/python')
for i in range(1,4):
print match.group(i)
print match.groups()
出力例
$ python sample.py
usr
bin
python
('usr', 'bin', 'python')
in
)In [3]: 'aaa' in 'xxxaaaxxx'
Out[3]: True