TECH EXPERT 42日目

TECH::EXPERT

今日は個人アプリ発表会の日。
みなさんグラフィカルに作られてて素晴らしいこと。
私には無理だわ。

スクレイピングや情報の抜粋するのにpythonの方が早そうだと認識したのでpythonを学ぶことに。標準語→関西弁くらいの差なのであんまり学習コストがかからないのでイイね。

python

cntl+D exit()

venvを用いて仮想化環境の作成

python -m venv py3env

仮想化環境の有効化
python_envに移動してから以下を実行する。

source py3env/bin/activate

: 条件文末につける

if age >= 20:
    print("あなたの年齢は20歳以上ですね!")

テキストの読み込み

第2引数にreadならr、writeならw、両方ならaを指定する。

f = open("data.txt","r")

XML解析

pythonは標準モジュールでxml解析が可能。
import xml.etree.ElementTree as ETがそれ。

import xml.etree.ElementTree as ET
root = ET.fromstring(xml_string)

print(root)
print(root.tag,root.attrib)
print(root.tag)
for child in root:
  print(child.tag, child.attrib)

XMLの構造

<HOGE_result>
    <result name="hoge"/>
    <result name="hoge"/>
    <result name="hoge"/>
    <result name="hoge"/>
    <result name="hoge"/>
    <FUGA_value>
        <value kana="ホゲ"/>
        <value kana="ホゲ"/>
        <value kana="ホゲ"/>
    </FUGA_value>
</HOGE_result>

ノードがネストされていく構造。
ノード.tagでノード名称が(上の例だとresultやFUGA_value)
ノード.attribで配下の属性情報が出力される。
({‘name’: ‘hoge’}や{‘kana’: ‘ホゲ’})
ネストしている場合に直接属性情報を持たないものはHOGE_result.attribは{}を返す。

rootに対してchildを指定することで子要素を全て抜粋できる。

for child in root:
    print(child.tag,child.attrib)

rootはタグと属性の辞書を持ち、イテレート可能な子ノードを持つ。

.iter()

タグ名を引数にもち、タグ名のノードを取得する。
深い階層でも取得できる。

for child in root.iter('value'):

.findall()

タグ名を引数にもち、タグ名のノードを取得する。
iter()と異なり、直下の子ノードのみが対象。

for result in root.findall('result'):

if文 pass

pythonでは中身が省略できない。
なので条件分岐をしたが、何も実行させたくない時にpassを使う。

if condition:
  pass
else:
  pass

requests

pythonライブラリ。
requests.get(‘URL’) で GET リクエストができる.
レスポンスに対して .text とすることで, レスポンスボディをテキスト形式で取得できる.

EDINET API

書類一覧API

import requests

url = "https://disclosure.edinet-fsa.go.jp/api/v1/documents.json"
params = {"date": "2019-08-22", "type": 2}

res = requests.get(url, params=params, verify=False)

path = 'edinet_api.txt'

with open(path_w, mode='w') as f:
    f.write(res.text)

CSS

横並び 折り返し 中央寄せ

.container{
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
}

ruby

=~演算子(メソッド)

正規表現とのパターンマッチを行う。
マッチした場合、マッチした位置を整数で返す。
マッチしなかった場合、nilを返す。

/ETF|JDR/ =~ com_name

Regexpクラスのメソッド 正規表現 =~ string
stringクラスのメソッド string =~ 正規表現
の2つがあるが、実質的に挙動が同じ。

string.include?(“hogehoge”)などで複数条件で指定したい場合には、include?の表現に限界があるので=~を使う。

キーワード:複数文字列 検索 マッチ

コメント