2011-01-24 13 views
0

分割線から最後のn個の終わりの単語をどうやって取得しますか?たとえば、私はこれらの行います最後からn個の単語を分割して取ります

1. 123.by2.gateway.edge.messenger.live.com 
2. messenger.com 
3. 10.17.123.45 
4. 126.by2.gateway.edge.messenger.live.com 
5. 14.messenger.live.com 

私はライン1、4 & 5のために、私は「messenger.live.com」とライン2 & 3は無傷のまま持っているように、アドレスから3つの最後の言葉を取りたいです。これは私がそれを達成するためにやっていることですが、ラメのようだ:

link = line.split('.') 
if len(link) > 4: # to bypass the IP address 
    plink = link[-1:-3] ? 
+2

分割後の行番号5 4つの要素を持つだろう。 – SilentGhost

+0

右SilentGhost。ありがとう。 – Adia

答えて

4

は、あなたがこれを使用することができ、数値IPを無視するには

plink = link[-3:] 

をしたい:

link = line.split('.') 
if len(link) > 3 and link[-1].isalpha(): 
    plink = link[-3:] 

これは2.と3.を無視し、5.を正しく実行します(SilentGhostが正しく5を無視しているので、コードは5を無視します)。

+0

上記のコードにgroup:setdefault(plink、dict())。setdefault(host、0)という行を追加すると、エラーメッセージ:TypeError:unhashable type: 'list'が返されます。何故ですか? – Adia

+0

@Adia - リストを辞書キーとして使用することはできません。それを 'tuple(link)'または ''。 '。join(link) '-string firstに変換してください。 – eumiro

+0

タプルへのリンクを変換した後、 'AttributeError:' NoneType 'オブジェクトに' split '属性がありません。 – Adia

関連する問題