ファイルから読み込んでディクショナリに
20080911000200 2 20080911000300 6 20080911000401 10 20080911000500 11 20080911000600 12 20080911000700 16 :
こんな感じに記述されたテキストファイルがある。実際にはWebにあるので以下のように読み込む。
In [1]: import urllib In [2]: url = "http://stats.2ch.net/kawasemi-m/eq-20080911.txt" In [3]: f = urllib.urlopen(url) In [4]: enagy = [e for e in f.readlines()] In [5]: enagy ['20080911000200\t2\n', '20080911000300\t6\n', '20080911000401\t10\n', '20080911000500\t11\n', : '20080911235600\t2602\n', '20080911235701\t2603\n', '20080911235800\t2604\n', '20080911235900\t2606\n']
'\t'までの部分は西暦+月+日+時+分+秒の並びになっているが、これの秒の部分を除いたものをkeyとして'\t'以降を要素とするディクショナリと作りたい。
keyの部分split()で得て、後半2つをスライス。
In [16]: e = enagy[0] In [19]: e.split('\t')[0][:-2] Out[19]: '200809110002'
keyの文字数は決まっているので直接スライス。
In [20]: e[:12] Out[20]: '200809110002'
後者の方が直感的かな?
問題は要素の部分。split()を駆使して
In [24]: e.split('\t')[1].split('\n')[0] Out[24]: '2'
とすれば得られなくも無い。最後の1文字をスライス。
In [27]: e.split('\t')[1][:-1] Out[27]: '2'
どう考えても後者の方が自然だな。
というわけで、こんな感じでディクショナリを作ってみた。
import urllib enagy={} url = "http://stats.2ch.net/kawasemi-m/eq-20080911.txt" f = urllib.urlopen(url) tmp = [e for e in f.readlines()] for e in tmp: enagy[e[:12]] = int(e.split('\t')[1][:-1])