言語処理100本ノック2章unixコマンドに入りました。
全然8月中に終わらせることができないような気がします...
いろいろアドバイスください!!
言語処理100本ノック2015のサイトにあるhightemp.txtを入力ファイルとします。
#10.行数のカウント
nlp10.py
#! usr/bin/env python
#coding:utf-8
with open('hightemp.txt','r') as f :
num_line = len([None for line in f])
print num_line
実行結果
24
unixコマンド
wc -l hightemp.txt
実行結果(unixコマンド)
24 hightemp.txt
#11.タブをスペースに置換
nlp11.py
#! usr/bin/env python
#coding:utf-8
with open('hightemp.txt','r') as f:
for line in f:
rep_line = ' '.join(line.split())
print(rep_line)
実行結果
高知県 江川崎 41 2013-08-12
埼玉県 熊谷 40.9 2007-08-16
岐阜県 多治見 40.9 2007-08-16
山形県 山形 40.8 1933-07-25
山梨県 甲府 40.7 2013-08-10
和歌山県 かつらぎ 40.6 1994-08-08
静岡県 天竜 40.6 1994-08-04
山梨県 勝沼 40.5 2013-08-10
埼玉県 越谷 40.4 2007-08-16
群馬県 館林 40.3 2007-08-16
群馬県 上里見 40.3 1998-07-04
愛知県 愛西 40.3 1994-08-05
千葉県 牛久 40.2 2004-07-20
静岡県 佐久間 40.2 2001-07-24
愛媛県 宇和島 40.2 1927-07-22
山形県 酒田 40.1 1978-08-03
岐阜県 美濃 40 2007-08-16
群馬県 前橋 40 2001-07-24
千葉県 茂原 39.9 2013-08-11
埼玉県 鳩山 39.9 1997-07-05
大阪府 豊中 39.9 1994-08-08
山梨県 大月 39.9 1990-07-19
山形県 鶴岡 39.9 1978-08-03
愛知県 名古屋 39.9 1942-08-02
unixコマンド
expand -t 1 hightemp.txt
#12.1列目をcol1.txtに,2列目をcol2.txtに保存
nlp12.py
#! usr/bin/env python
#codeing:utf-8
with open('hightemp.txt','r') as f:
wf1 = open('col1.txt','w')
wf2 = open('col2.txt','w')
for line in f:
wf1.write(line.split()[0]+'\n')
wf2.write(line.split()[1]+'\n')
wf1.close()
wf2.close()
実行結果
col1.txt
高知県
埼玉県
岐阜県
山形県
山梨県
和歌山県
静岡県
山梨県
埼玉県
群馬県
群馬県
愛知県
千葉県
静岡県
愛媛県
山形県
岐阜県
群馬県
千葉県
埼玉県
大阪府
山梨県
山形県
愛知県
col2.txt
江川崎
熊谷
多治見
山形
甲府
かつらぎ
天竜
勝沼
越谷
館林
上里見
愛西
牛久
佐久間
宇和島
酒田
美濃
前橋
茂原
鳩山
豊中
大月
鶴岡
名古屋
unixコマンド
cut -f1 hightemp.txt > col1.txt
cut -f2 hightemp.txt > col2.txt
#13. col1.txtとcol2.txtをマージ
nlp13.py
#! usr/bin/env python
#coding:utf-8
c1 = open('col1.txt','r')
c2 = open('col2.txt','r')
with open('merge.txt','w') as wf:
for line1,line2 in zip(c1,c2):
wf.write(line1.strip()+' '+line2.strip()+'\n')
c1.close()
c2.close()
実行結果
高知県 江川崎
埼玉県 熊谷
岐阜県 多治見
山形県 山形
山梨県 甲府
和歌山県 かつらぎ
静岡県 天竜
山梨県 勝沼
埼玉県 越谷
群馬県 館林
群馬県 上里見
愛知県 愛西
千葉県 牛久
静岡県 佐久間
愛媛県 宇和島
山形県 酒田
岐阜県 美濃
群馬県 前橋
千葉県 茂原
埼玉県 鳩山
大阪府 豊中
山梨県 大月
山形県 鶴岡
愛知県 名古屋
unixコマンド
paste col1.txt col2.txt
#14.先頭からN行を出力
nlp14.py
#! usr/bin/env python
#coding:UTF-8
import sys
argvs = sys.argv[1]
#コマンドライン引数が正しく入力されているか確認する部分を作成
with open('hightemp.txt','r') as file:
for i in xrange(int(argvs)):
line = file.readline()
print line,
実行結果(コマンドライン引数を3とした場合)
高知県 江川崎 41 2013-08-12
埼玉県 熊谷 40.9 2007-08-16
岐阜県 多治見 40.9 2007-08-16
unixコマンド
head -3 hightemp.txt
コマンドライン引数が入力されていない場合のエラー処理をしないといけないと思いつつ放置しました。