2

私は IRC ボットを作成しており、多数の分割を使用してメッセージを解析しています。IRC「メッセージ」の形式は次のとおりです。

:username!765a4aa2@gateway/web/freenode/ip.***.***.***.*** PRIVMSG #Channel :Message body

特に、メッセージのテキストを取得するものは次のとおりです。

message = data.split(':')[2]

これは最後の「:」以降のすべてを取得しますが、ユーザーが IRC 経由でリンクを送信すると、メッセージは次のようになります。

:username!765a4aa2@gateway/web/freenode/ip.***.***.***.*** PRIVMSG #Channel :http://web address.com/

残りは分割の 3 番目のセクションにあるため、コードはメッセージの「http」セクションのみを取得します。

では、リンクを含むメッセージを解析するにはどうすればよいでしょうか?

1 つの方法は、最初のセクションの長さを取得して削除することです。

message = data[len(data.split(':')[1])+1:]

しかし、もっと良い方法があるはずだと感じずにはいられません。ありますか?

4

2 に答える 2

3

str.split()オプションの引数を受け入れますmaxsplit

message = data.split(':', 2)
于 2012-11-15T23:55:26.230 に答える
1

分割する金額を設定し:ます。

data.split(':', 2)

そして、次のものが得られます。

['',
'username!765a4aa2@gateway/web/freenode/ip.***.***.***.*** PRIVMSG #Channel ',
'http://web address.com/']
于 2012-11-15T23:55:19.757 に答える