今回は、yaml で、PythonのデータからYAML形式に変換したり、YAML形式のファイルを解析して要素を出力できるようになりました。
Pythonによるスクレイピング&機械学習開発テクニック増補改訂 Scrapy、BeautifulSoup、scik [ クジラ飛行机 ]の第3章を参考にさせていただきながら、取り組んでいます。
今回からは、Ubuntuの環境を構築して取り組んでいます。
環境構築については、Dockerを使われる方は、以下をご参照ください。
OSから、Ubuntuを導入して取り組む方は、以下をご参照ください。
では、振り返っていきたいと思います。
YAMLは、インデントを利用して階層構造を表現を持ったテキストのデータ形式です。(YAML Ain’t Markup Languageの略と言われるように、HTMLやXMLなどのマークアップ言語ではないようです。) 記載方法については、後ほど、Pythonのデータを変換して確認していきたいと思います。 まずは、PythonのデータをYAML形式に変換して、どのような形式に変換されるかを確認して行きます。 コード全体は以下の通りで、「yaml-dump.py」に保存しました。 import yaml #(1)Pythonのデータ(リスト型の中に辞書型のデータ)を作成 #(2) PythonのデータをYAMLに変換 では、コードを順番に見ていきます。 ここは、通常のPythonの処理なので、詳述はしませんが、customerというリスト型の変数に、辞書型のデータをリストにして入れ込みます。 辞書型のデータには、「name」、「age」、「hobby」を設定します。 customer = [ 先ほど作成したcustomerを、Yaml形式に変換します。 変換方法は簡単で、yaml.dump()メソッドを利用して、引数にcustomerを渡すだけです。 戻り値は、str型(文字型)になります。 先ほど作成したファイルを実行してみます。 python3 yaml-dump.py 以下の通り、PythonのデータをYAML形式で出力できました。 「-」ハイフンがリスト形式の1要素ずつを表しています。「-」の後には、半角スペースが必要です。 また、辞書型については、キー項目と値の間に「:」コロンを記載します。この記載方法は、Pythonと似ているので理解しやすいです。 辞書型の順番については、キー項目の辞書順になるので、注意が必要です。 この出力結果を、「yaml_data.txt」に保存しておきます。 次に、先ほどYAML形式で保存した「yaml_data.txt」ファイルから文字列を読み込んで、解析して、要素を出力する処理を行います。 コード全体は以下の通りで、「yaml-load.py」に保存しました。 import yaml #(1)YAML形式で記載されたテキストファイルから文字列を取得 with open('yaml_data.txt', mode='r') as fp: #(2)YAML形式を解析して「name」と「age」を出力 for item in data: では、コードを順番に見ていきます。 YAML形式で記載されたテキストファイルを開きます。 with open('yaml_data.txt', mode='r') as fp: 開いたファイルから、文字列を取得します。 yaml_str = fp.read() yaml.load()メソッドにYAML形式の文字列を渡して、Pythonのデータ形式に変換します。 この時点で、「data」は、元の「customer」と同様に、リスト型の中に辞書型の要素を持つ構造になっています。 すでにリスト型になっているので、「data」から一つずつ要素を取り出して、「name」と「age」を出力します。 for item in data: 先ほど作成したファイルを実行してみます。 python3 yaml-load.py 以下の通り、YAML形式で記載されたファイルを読み込んで要素を出力できました。 これで、Web上に公開されているYAML形式のデータについても、ダウンロード後に解析して処理できるようになりました。 いろいろな形式で公開されているデータが扱えるようになってきたので、今後は、解析したデータをパソコン上でどのように処理していくかについても学習して行きたいと思います。 次回以降も、Pythonによるスクレイピング&機械学習開発テクニック増補改訂 Scrapy、BeautifulSoup、scik [ クジラ飛行机 ]で、スクレイピングと機械学習開発に取り組んでいきたいと思います。 【過去記事】 2019年8月31日(土)にE資格を受験して、合格しました! E資格対策として勉強の進め方や、参考書などをまとめました。 これから受験される方がいらっしゃいましたらご参考まで。 2019年3月9日(土)にG検定を受験し、見事合格できました! 受験の体験記や勉強法などを別のブログにまとめました。 これから受験される方がいらっしゃいましたらご参考まで。 【E資格対策に使った参考書】 PythonのデータをYAMLに変換する。
1.YAMLとは何か
2.全体像
import warnings
warnings.simplefilter('ignore')
customer = [
{'name':'SUZUKI','age':'21','hobby':'car'},
{'name':'SATO','age':'33','hobby':'anime'},
{'name':'YAMADA','age':'52','hobby':'judo'},
{'name':'TANAKA','age':'33','hobby':'travel'}
]
yaml_str = yaml.dump(customer)
print(yaml_str)
print('--- --- ---') 3.Pythonのデータを作成
{'name':'SUZUKI','age':'21','hobby':'car'},
{'name':'SATO','age':'33','hobby':'anime'},
{'name':'YAMADA','age':'52','hobby':'judo'},
{'name':'TANAKA','age':'33','hobby':'travel'}
] 4. PythonのデータをYAMLに変換
5.コマンドラインから実行してみる。
YAMLのデータを解析して要素を出力する。
1.全体像
import warnings
warnings.simplefilter('ignore')
yaml_str = fp.read()
print(item['name'],item['age'])2.YAML形式で記載されたテキストファイルから文字列を取得
3. YAML形式を解析して「name」と「age」を出力
print(item['name'],item['age'])4.コマンドラインから実行してみる。