はじめに. | CSV形式とは¶. https://docs.python.org/ja/3/library/csv.html, CSV形式とは "comma-separated values" の略で、 複数の値をコンマで区切って記録するファイル形式です。, みなさんExcelを使ったことがあると思いますが、 Excelでは1つのセルに1つの値(数値や文字など)が入っていて、 その他のセルの値とは独立に扱えますよね。, それと同じように、CSV形式では、,(コンマ)で区切られた要素はそれぞれ独立の値として扱われます。, たとえばサークルのメンバーデータを作ることを考えましょう。 メンバーは「鈴木一郎」と「山田花子」の2名で、 それぞれ『氏名』『ニックネーム』『出身地』を記録しておきたいと思います。, CSVファイルを読み書きするには、 ファイルをオープンして、そのファイルオブジェクトから、 CSVリーダを作ります。, CSVリーダとは、CSVファイルからデータを読み込むためのオブジェクトで、 このオブジェクトのメソッドを呼び出すことにより、CSVファイルからデータを読み込むことができます。, CSVリーダを作るには、 csv というモジュールの csv.reader という関数にファイルオブジェクトを渡します。, たとえば、次のような表で表されるCSVファイル small.csv を読み込んでみましょう。, 11 | 12 | 13 | 14 | 15 21 | 22 | 23 | 24 | 25 31 | 32 | 33 | 34 | 35, このようにして CSVファイルを読むと、 CSVファイルの各行のデータが文字列のリストとなって返されます。, 数値が '' で囲われている場合、数値ではなく文字列として扱われているので、そのまま計算に使用することができません。, 文字列が整数を表す場合、int 関数によって文字列を整数に変換することができます。 文字列が小数を含む場合は float 関数で浮動小数点数型に変換、文字列が複素数を表す場合は complex 関数で複素数に変換します。, ファイルの終わりまで達した後に next 関数を実行すると、下のようにエラーが返ってきます。, 繰り返しの各ステップで、next(dataReader) が呼び出されて、 row にその値が設定され、for文の中身が実行されます。, CSVライターとは、CSVファイルを作ってデータを書き込むためのオブジェクトで、 このオブジェクトのメソッドを呼び出すことにより、データがCSV形式でファイルに書き込まれます。, CSVライターを作るには、 csv というモジュールの csv.writer という関数にファイルオブジェクトを渡します。 ここで、半角英数文字以外の文字(たとえば日本語文字や全角英数文字)を書き込み・書き出しする際には、 文字コード(たとえば encoding='utf-8')を指定し、 また書き出しの際にはさらに改行コードとして newline='' を指定しないと文字化けが生じる可能性があります。, 書き込みモードの場合も、ファイルを使い終わったらクローズすることを忘れないようにしましょう。, tokyo-temps.csv には、気象庁のオープンデータからダウンロードした、 東京の7月の平均気温のデータが入っています。, http://www.data.jma.go.jp/gmd/risk/obsdl/, 48行目の第2列に1875年7月の平均気温が入っており、 以下、2016年まで、12行ごとに7月の平均気温が入っています。, ファイルをオープンするときに、キーワード引数の encoding が指定されています。 このファイルはShift_JISという文字コードで書かれているため、 この引数で、ファイルの符号(文字コード)を指定します。 'shift_jis' はShift_JISを意味します。この他に、'utf-8'(UTF-8、すなわちビットのUnicode)があります。, 変数 years に年の配列、変数 july_temps に対応する年の7月の平均気温の配列が設定されます。, tokyo-temps.csv を読み込んで、各行が西暦年と7月の気温のみからなる 'tokyo-july-temps.csv' という名前のCSVファイルを作成してください。 西暦年は1875から2016までとします。, 以下のセルによってテストしてください。(years と july_temps の値がそのままと仮定しています。), 整数データのみからなるCSVファイルの名前を受け取ると、そのCSVファイルの各行を読み込んで整数のリストを作り、 ファイル全体の内容を、そのようなリストのリストとして返す関数 csv_matrix(name) を定義してください。, ©2020, 東京大学 数理・情報教育研究センター (CC BY-NC-ND 4.0). プログラミング言語pythonのfor文について、python初心者向けに解説します。, 今回は、プログラミング言語pythonの初心者でもfor文が理解できるよう、具体的なソースコードを使いながら解説していきます。, 扱う内容は、for文の書き方、range関数、break、continueについてです。本記事を読めば、python for文の基礎がマスターできるでしょう。, python for文を使えば、例えば、1から100までの数字を順番に出力したり、配列の要素を順番に取り出したりすることができます。, まずは、プログラミング言語pythonにおける、for文の書き方からみていきましょう。, 以上がpyhon for文の書き方です。pythonのfor文では、変数の後ろに「in」が付くことと、オブジェクトの後ろに「:」が付くことに注意しましょう。, しかし、これだけではわかりにくいと思うので、次の章からは具体的なソースコードでpython for文を解説していきます。, 以上の配列の要素3つを繰り返し処理したい場合は、以下のようにソースコードを記述します。, ①変数wに、配列wordsの最初の要素(Japanese)が代入されてprintで出力, ②変数wに、配列wordsの二番目の要素(English)が代入されてprintで出力, ③変数wに、配列wordsの三番目の要素(French)が代入されてprintで出力, 以上がpython for文の具体例1つ目になります。配列オブジェクトに対してfor文が使えることをまずは知っておきましょう。, しかし、python for文では、そのような繰り返し方だけではなく、単に10回繰り返す・100回繰り返すなどの繰り返し方もできます。, 例えば、5回繰り返すfor文を書きたい場合は、以下のようにソースコードを記述します。, 「range(5)」と記述することで、変数numに0から4までの数字が繰り返し代入されていくということですね。以上がpython for文でrange関数を使う基本パターンです。, range関数には、他の使い方もあります。例えば、以下のソースコードを見てみましょう。, 「range(5, 10)」と記述することで、5から9までの範囲を指定することができます。range(5)などの書き方と混乱しないように気をつけましょう。, range(0, 10, 3)の3は、増加量を表しています。つまり、0以上10未満の数字の中で、3ずつ増加するということなので、「0・3・6・9」が出力されているのです。, python for文を使っていると、繰り返し処理を途中でやめたいという場合も発生してきます。, ※ソースコードにある「if」がよくわからない人は、pythonのif文について解説した記事をご覧ください。, 今回の場合だと、「if num == 10」とあるので、numが10になった時点でfor文が終了します。, 最後に、continueを紹介します。まずは、以下のソースコードを見てみましょう。, continue文は、continueの後にあるソースコード(今回だと「print(“奇数”, num)」)の部分をスキップする形でfor文を次に進めることができます。, break文では、break以降の処理を行わずにfor文が終了しましたね。continueでは、for文を次に進めることができるという点がbreakとの違いです。, python for文についての解説は以上になります。for文はプログラミングの中でも基礎的な箇所なので、ぜひ理解しておきましょう。, 現役シリコンバレーエンジニアが教えるPython入門講座。Python3の基本を取得できます。, HTML, CSS, Bootstrap, JavaScript, MySQL, Ruby, Ruby on Rails, AWS Cloud9, Git, GitHubを用いたWebアプリケーション開発の方法を総合的に学べます。, AWSの基本資格「AWS 認定ソリューションアーキテクト – アソシエイト試験」を合格を目指し、そのための知識や経験を獲得できるように!, WordPressのカスタマイズ手法を身につけ、自身のサイト構築や開発案件の受託などを目指しましょう。, pythonのfor文では、変数の後ろに「in」が付くことと、オブジェクトの後ろに「:」が付くことに注意.