こんにちは。福田直起です。
この記事では、言語処理100本ノック2020の「第2章 : UNIXコマンド」の10問をPythonとUNIXコマンドで解き、複数回に分けて解説したものをまとめています。
各記事へのリンクと内容の概要
今回は読みやすさを考慮して、出題意図を推察しながら以下の図のように記事を分割しました。
1. データのダウンロードと整形
前編
(前文、Q10、Q11) blog.brains-consulting.tech
UNIXコマンドを使って課題ファイルをダウンロードし、Pythonでファイルを読み書きする方法や、Q11の問題文で言及されている3つのコマンドについて解説しています。
後編
(Q12、Q13)
blog.brains-consulting.tech
PythonやUNIXコマンドを使って、データがタブ区切りで格納されている課題ファイルを分割したり結合したりする方法を解説しています。
2. データ内容の確認とデータの分割
(Q14、Q15、Q16)
blog.brains-consulting.tech
これらの問題ではコマンドライン引数を受け取るアプリケーションを作ることを要求されています。今回私はPythonのライブラリであるtyper
を使って解いたので、それについて解説しています。
また、Q16で扱うUNIXのsplit
コマンドについては、オプションを詳しく解説しています。
3. 複数プロセスが必要なデータ処理
(Q17、Q18、Q19)
blog.brains-consulting.tech
Pythonでこれらの問題を解く際に外部ライブラリを使う方法、使わない方法の速度比較を含めたメリット・デメリットを解説しています。
UNIXコマンドでは、複数のコマンドをパイプでつなげてより複雑な処理を行う方法について解説しています。
Appendix. 厳格でないソートが行われる可能性についての検証
Q17~Q19を解いていて見つけたUbuntuのsort
コマンドと、Pandasのsort_values()
の厳格でない挙動についての検証のAppendixとなります。
おわりに
以上、言語処理100本ノックの第2章について解説しました。
複数記事にわたってかなり長い記事を執筆することになりましたが、お役に立てたなら幸いです。
また、ブレインズコンサルティングでは一緒に働いてくれる仲間を募集しています。 ご興味のある方は、ぜひ一度採用サイトをご覧ください。