127-文字列の抽出

1444 ワード

「123#%4 hello*world 000」という文字列があります.
  • 文字列のすべてのアルファベットを
  • に取り出します.
  • 文字列の先頭の非アルファベット文字除去分析:アルファベット抽出の要求に対して、まずすべての文字列を遍歴し、文字列がアルファベットであればリストに保存し、要求結果が文字列であれば、それらをつなぎ合わせるとよい:
  • >>> s1 = '123#%4hello*world000'
    >>> slist = []
    >>> for ch in s1:
    ...     if ch.isalpha():
    ...         slist.append(ch)
    ...
    >>> print(slist)
    ['h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd']
    >>> ''.join(slist)
    'helloworld'
    
    リスト解析では、上記のコードを1行に簡略化できます.
    >>> [ch for ch in s1 if ch.isalpha()]
    ['h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd']
    >>> ''.join([ch for ch in s1 if ch.isalpha()])
    'helloworld'
    
    2つ目の要件は、文字列の先頭にある非アルファベット文字を除去することです.この機能の実装は、左の最初のアルファベットの下付き文字を見つけて、スライスを取ります.2つ目の要件は、次の2つの方法で達成されます.
  • 直接標
  • を外す
    >>> s1 = '123#%4hello*world000'
    >>> for i in range(len(s1)):
    ...     if  s1[i].isalpha():
    ...         break
    ...
    >>> print(s1[i:])
    hello*world000
    
  • enumerate組み込み関数
  • >>> s1 = '123#%4hello*world000'
    >>> for ind, ch in enumerate(s1):
    ...     if ch.isalpha():
    ...         break
    ...
    >>> print(s1[ind:])
    hello*world000