やりたいこと
(1)文字列(1行)に、特定の単語Aが入っているかを確認する。
(2)単語Aの場所を探す
(3)単語Aにスペース区切りで続く、単語B,C,D,E,Fを取得したい。
note: いくつかのWebによると、正規表現より文字列メソッド(string module)の方が、高速だそうです。
(1) 文字列に、単語が含まれているか? → 文字列メソッド find
find( sub[, start[, end]])
文字列中の領域 [start, end] に sub が含まれる場合、 その最小のインデクスを返します。
>>> moji = "xxx xxxx xxx@ 1 2 3 44 555 xxx xxx"
>>> moji.find("xxx@")
9
http://www.python.jp/doc/2.5/lib/string-methods.html
(2) スペース区切りの文字列をリストにする → 文字列メソッド split
split( [sep [,maxsplit]])
sep を単語の境界として文字列を単語に分割し、分割された単語 からなるリストを返します。
>>> mojilist = moji.split()
>>> mojilist
['xxx', 'xxxx', 'xxx@', '1', '2', '3', '44', '555', 'xxx', 'xxx']
http://d.hatena.ne.jp/n00dle/20090705/1246726299
http://tibet.que.ne.jp/otani/2004python/python12.html
(3) リスト内の要素(文字列)のIndexの取得 -- 文字列メソッド index
リストに要素の検索だけなら in
>>> mojilist
['xxx', 'xxxx', 'xxx@', '1', '2', '3', '44', '555', 'xxx', 'xxx']
>>> "xxx@" in mojilist
True
文字列の場所(Index)の取得
>>> mojilist.index("xxx@")
2
(3) xxx@ に続く5個の文字列(要素)の取得
>>> mojilist[2+1:2+6]
['1', '2', '3', '44', '555']
http://d.hatena.ne.jp/yumimue/20071205/1196839438
あと、splitlines は、小さなファイルを解析する場合、便利そうです。たとえば、
1. テキストファイルを、1行ごとにリスト化
2. リストの要素を、スペース区切りにリスト化
3. リストの要素を、indexで検索
splitlines( [keepends])
文字列を改行部分で分解し、各行からなるリストを返します。
http://www.python.jp/doc/2.5/lib/string-methods.html