6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

素人の言語処理100本ノック:13

Last updated at Posted at 2016-09-25

言語処理100本ノック 2015の挑戦記録です。環境はUbuntu 16.04 LTS + Python 3.5.2 :: Anaconda 4.1.1 (64-bit)です。過去のノックの一覧はこちらからどうぞ。

第2章: UNIXコマンドの基礎

hightemp.txtは,日本の最高気温の記録を「都道府県」「地点」「℃」「日」のタブ区切り形式で格納したファイルである.以下の処理を行うプログラムを作成し,hightemp.txtを入力ファイルとして実行せよ.さらに,同様の処理をUNIXコマンドでも実行し,プログラムの実行結果を確認せよ.

###13.col1.txtとcol2.txtをマージ

12で作ったcol1.txtとcol2.txtを結合し,元のファイルの1列目と2列目をタブ区切りで並べたテキストファイルを作成せよ.確認にはpasteコマンドを用いよ.

出来上がったコード:

main.py
# coding: utf-8

with open('col1.txt') as col1_file, \
		open('col2.txt') as col2_file, \
		open('merge.txt', mode='w') as out_file:

	for col1_line, col2_line in zip(col1_file, col2_file):
		out_file.write(col1_line.rstrip() + '\t' + col2_line.rstrip() + '\n')

実行結果:

merge.txt
高知県	江川崎
埼玉県	熊谷
岐阜県	多治見
山形県	山形
山梨県	甲府
和歌山県	かつらぎ
静岡県	天竜
山梨県	勝沼
埼玉県	越谷
群馬県	館林
群馬県	上里見
愛知県	愛西
千葉県	牛久
静岡県	佐久間
愛媛県	宇和島
山形県	酒田
岐阜県	美濃
群馬県	前橋
千葉県	茂原
埼玉県	鳩山
大阪府	豊中
山梨県	大月
山形県	鶴岡
愛知県	名古屋

UNIXコマンドの確認は、シェルスクリプトで行いました。

test.sh
#!/bin/sh

# マージ
paste col1.txt col2.txt > merge_test.txt

# 比較
diff --report-identical-files merge.txt merge_test.txt

実行結果:

端末
ファイル merge.txt と merge_test.txt は同一です

無事、同じ結果になりました。

Pythonのドキュメントにおける「空白文字」とは

今回ちょっとつまづいたのは改行の除去方法です。
col1_linecol2_lineは行末の改行コード付きなので、これを取り除いてからタブ区切りで連結する必要があります。str.rstrip()で引数を省略すると空白文字が除去されるという説明なのですが、この「空白文字」の定義がわかりませんでした。

Pythonのドキュメントにおける「空白文字」の原文は「whitespace」であることから、「whitespace」でちょっと調べてみました。その結果、string.whitespaceの説明やbytearray.isspace()の説明から、次のものが該当すると考えて良さそうです。

空白文字 コード(16進数) 文字列リテラル
スペース 20 ' '
タブ(HT) 09 '\t'
改行(LF) 0a '\n'
復帰(CR) 0d '\r'
改頁(FF) 0c '\f'
垂直タブ(VT) 0b '\v'

 
14本目のノックは以上です。誤りなどありましたら、ご指摘いただけますと幸いです。

6
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?