はじめに
Pythonを勉強するため、東京工業大学の岡崎教授が出題されている言語処理100本ノック 2015を解いていきます。
より深く理解するため、別解や利用したライブラリの解説もまとめていきます。
環境
Python3.6
OS : mac
2章からUNIXコマンドの問題ですが、macもターミナルから利用できるようです。
問題
hightemp.txtは,日本の最高気温の記録を「都道府県」「地点」「℃」「日」のタブ区切り形式で格納したファイルである.以下の処理を行うプログラムを作成し,hightemp.txtを入力ファイルとして実行せよ.さらに,同様の処理をUNIXコマンドでも実行し,プログラムの実行結果を確認せよ.
17. 1列目の文字列の異なり
1列目の文字列の種類(異なる文字列の集合)を求めよ.確認にはsort, uniqコマンドを用いよ.
解答:Python
points
- 1列目を取り出す
- 空白文字は除く
- 重複を除く
program
def read_file(file_name):
with open(file_name, 'r') as file:
return file.read()
lines = read_file('hightemp.txt').split('')
# 空行の削除
lines = list(filter(lambda line: line != '', lines))
# 1列目の取り出し
cal1 = set(map(lambda line: line.split('\t')[0].strip(), lines))
print("".join(cal1))
出力
山梨県
静岡県
岐阜県
和歌山県
愛媛県
群馬県
愛知県
千葉県
高知県
埼玉県
山形県
大阪府
解説
1列目の取り出しまでは、問題12. 1列目をcol1.txtに,2列目をcol2.txtに保存と同じです。
set()
は配列から集合を生成します。つまり、重複のない異なる文字列の集合となります。
解答:UNIXコマンド
考え中。。。
続いての記事
前の問題:16. ファイルをN分割する
Python:ファイルダウンロードの進行状況とファイルサイズを表示する方法。urllib
Pythonschedule2024-02-27
【Python】tqdmでforの進捗状況を表示する
PythonColabolatoryschedule2021-02-16
学習済みの日本語単語ベクトルをColabolatoryで試してみる
自然言語処理PythonColabolatoryschedule2021-02-04
Unity ML-Agentsで新しく学習環境を作る
Unity機械学習C#PythonDeepLearningschedule2021-01-22
27. 内部リンクの除去
自然言語処理100本ノックPythonschedule2020-03-17