皆さん、良い一日を
以前も似たようなことを書いたので、また同じようなことがあったらごめんなさい。今回はより具体的に、直接的な例を示し、私が望むものを正確に描写します。基本的に、生データをよりきれいに見せる必要があります。
str = '2011-06-1618:53:41222.222.2.22-somedomain.hi.comfw12192.10.215.11GET/965874/index.xls22233665588-0Mozilla/4.0 (compatible; MSI 5.5; Windows NT 5.1)'--55656-0.55-5874/659874540--'
more strings:
'2011-06-2150:36:1292.249.2.105-somedomain.hi.comfw12192.10.215.11GET/965874/ten.xls22233665588-0Mozilla/4.0 (compatible; MSI 6.0; Windows NT 5.1)'--55656-0.55-5874/659874540--'
'2011-01-1650:23:45123.215.2.215-somedomain.hi.comfw12192.10.215.11GET/123458/five.xls22233665588-0Mozilla/4.0 (compatible; MSI 7.0; Windows NT 5.1)'--55656-0.55-5874/659874540--'
'2011-02-1618:16:54129.25.2.119-thisdomain.hi.comfw12192.10.215.11GET/984745/two.xls22233665588-0Mozilla/4.0 (compatible; MSI 7.0; Windows NT 5.1)'--55656-0.55-5874/659874540--'
'2011-08-0525:22:16164.32.2.111-yourdomain.hi.comfw12192.10.215.11GET/85472/one.xls22233665588-0Mozilla/4.0 (compatible; MSI 8.0; Windows NT 5.1)'--55656-0.55-5874/659874540--'
デバッガーで:
import re
str = '2011-06-1618:53:41222.222.2.22-somedomain.hi.comfw12192.10.215.11GET/965874/index.xls22233665588-0Mozilla/4.0 (compatible; MSI 5.5; Windows NT 5.1)'--55656-0.55-5874/659874540--'
domain = re.compile('^.*?(?=([fw].+?))')
domain.search(str).group()
'2011-06-1618:53:41222.222.2.22-somedomain.hi.com'
domain = domain.search(str).group()
したがって、ドメインを取得するには、ダッシュ (-) の前、ドメイン名の直前にあるものをすべて削除する必要があります。この RE ([0-9]{3,5}).([0-9]{1,3}.){2}[0-9]{1,3}[- ]しかし、その値を見つけて、それ以降、ただしfw12の前にすべてを返すという言い方がわかりません。
一日の終わりに、カンマ(,)を区切り文字として使用して、これらの文字列を次のように表示します。
2011-08-05、25:22:16、164.32.2.111、yourdomain.hi.com、GET/85472/one.xls、Mozilla/4.0 (互換性あり; MSI 8.0; Windows NT 5.1)