Python入門-文字列


一、文字列索引
1、文字列を扱う場合は、常に各文字にループしてアクセスする必要があります.たとえば、文字列mystrがあり、文字列インデックスを使用するには、各文字を取得する必要があります.
>>> mystr='Terdata'
>>> mystr[0]
'T'
>>> mystr[1]
'e'
>>> mystr[2]
'r'
>>> mystr[3]
'd'
>>> mystr[4]
'a'
>>> mystr[5]
't'
>>> mystr[6]
'a'

その結果、mystr文字列の長さはnであり、その最初の文字はmystr[0]、mystr[1]は2番目の文字であり、順次類推され、mystr[n-1]は最後の文字であることがわかる.
2、負数索引
Pythonは、文字列のインデックスを右から左に負の数で表すことをコンセプトに、比較的簡単で便利な負のインデックスを提供しています.
>>> s='Evan'
>>> s[-1]
'n'
>>> s[-2]
'a'
>>> s[-3]
'v'
>>> s[-4]
'E'

したがって、文字列の最後の文字はs[-1]である.
3、forループアクセス文字
次のプログラムは、指定された文字列の文字コードの合計です.
#codesum.py
def codesum1(s):
    """Return the sums of the
    character code of s.
    """
    total=0
    for c in s:
        total=total+ord(c)
    return total
のようにforループは、aのASCII符号化が97、bが98のような各文字の符号化を計算する.
結果は次のとおりです.
>>> codesum1('Hello world')
1084

もう1つの方法は、循環文字の長さです.
#codesum2.py
def codesum2(s):
    """Return the sums of the
    character codes of s
    """
    total=0
    for i in range(len(s)):
        total=total+ord(s[i])
    return total

結果は次のとおりです.
>>> codesum2('Evan')
394

4、文字
文字列は文字で構成され、各文字には対応する文字符号化があり、ord関数を使用して取得できます.
>>> ord('a')
97
>>> ord('b')
98
>>> ord('A')
65

所定の文字符号化では、chr関数を使用して対応する符号化を取得できます.
>>> chr(98)
'b'
>>> chr(97)
'a'
>>> chr(65)
'A'

エスケープ文字:改行、リターン、タブなど、すべての文字が表示されるわけではありません.
文字列にスラッシュ、一重引用符、二重引用符を含めるには、対応するエスケープ文字を使用することがよくあります.次のようになります.
>>> print('\' and \" are good')
' and " are good
>>> print('\\ must be written \\\\')
\ must be written \\
Pythonでは、改行を表す標準的な方法は文字を使用します.
>>> print('one
two
three') one two three

エスケープ文字は単一の文字であり、深く理解しなければならない.文字列の長さを計算するときは、追加の記号とはみなされません.次のようになります.
>>> len('\\')
1
>>> len('a
b
c') 5

二、文字列スライス
文字列をスライスするには、2つのインデックスを指定します.最初の文字のインデックスを抽出します.最後の文字を抽出するインデックスに1を追加します.次のようになります.
>>> s='Guang Zhou'
>>> s[0:4]
'Guan'
>>> s[0:5]
'Guang'
>>> s[6:10]
'Zhou'

スライスに使用されるインデックスは、各文字にアクセスするインデックスと同じです.最初は常にゼロで、最後のインデックスは文字列より1未満です.一般的には、
s[begin:end]は、インデックスbeginからend-1までの文字列を返します.
sが文字列の場合、s[i]またはs[i:i+1]を使用してインデックスiに対応する文字にアクセスする必要があります.
スライスを取得する方法:スライスの開始インデックスを省略した場合、Pythonは0と仮定します.スライスの終了インデックスを省略すると、Pythonは抽出する文字列の末尾と仮定します.次のようになります.
>>> s='Guang Zhou'
>>> s[:5]
'Guang'
>>> s[6:]
'Zhou'
>>> s[:]
'Guang Zhou'
このスライスの例を見て、主にファイルの拡張子を取得します.
#extension.py
def get_txt(fname):
    """Returns the extension of file
    fname.
    """
    dot=fname.rfind('.')
    if dot==-1: # fname nothing
       return ''
    else:
        return fname[dot+1:]

結果は次のとおりです.
>>> get_txt('data.xls')
'xls'
>>> get_txt('pazi.py')
'py'
>>> get_txt('test')
''

スライス操作を行う場合は、負数インデックスのスライスを使用することもできます.
>>> s='Guang zhou'
>>> s[-9:-4]
'uang '
>>> s[-8:-3]
'ang z'
>>> s[-10:-5]
'Guang'
>>> s[:-4]
'Guang '