Python関連のことを調べてみた2021年12月19日

Python関連のことを調べてみた2021年12月19日

Selenium webdriverの仕様&仕様変更でちょっとつまづいた話

先日、とあるサイトのクローリングのためにスクリプトを書くことになったが、getリクエストをしただけでは取ってこれないサイトであったためSelenium-webdriverを使うことになった。
しかし結構いろんなことで躓いたのでメモとして残しておく。

## ① xpathの指定の際に添え字が使えない(これが大問題)
例えば、id=fugafugaのdiv→div→ulの中に

“`example.html

  • pytest mark を使用した実行するテストの絞り込み

    この記事は[ケーシーエスキャロット Advent Calendar 2021](https://qiita.com/advent-calendar/2021/kcscarrot)の19日目の記事です。

    皆さん、`python` で単体テストを行う際、`pytest` を使用する場面が多いのではと思います。

    例えば、以下のような構成でファイルがあったとします。

    “`bash
    .
    └──calc
    ├── calc.py
    └── test_calc.py
    “`

    “`python(calc.py)
    #!/usr/bin/env python

    def add(x: int, y: int) -> int:
    return x + y

    def sub(x: int, y: int) -> int:
    return x – y

    def adds(x: int, y: int, z: int) -> int:
    return add(add(x, y), z)
    “`

    “`python(test_calc.py)
    #!/usr/bin/env

  • 元記事を表示

    強化学習の基本を図と数式で理解する①

    # はじめに

    今年大学のTAとして、学部1年生向けに強化学習の入門授業のようなものを担当しました。
    実質的な授業回数は3回程度なので、本当に触り程度ですが、せっかく資料を作成しましたので公開しようと思います。

    記事は、内容に即して第1回と第2回に分けてあります。
    第1回の本記事では、強化学習の理論的背景を図と数式を交えて解説します。
    第2回では、古典的な強化学習の一つであるQ学習について解説し、実際にpythonを用いて迷路踏破Agentを実装します。

    なるべく初学者でもわかりやすいように書いていますが、見づらい部分やわかりにくい部分、間違っている箇所などありましたらご指摘くださるとありがたいです。
    なお本記事は、強化学習 Advent Calendar 2021 の19日目の記事です。

    # 強化学習の概要

    – 機械学習の大きな分類(教師あり学習、教師なし学習、**強化学習**)の一つ
    – 犬をしつけるときのように、良いことをしたらご褒美を、悪いことをしたら罰を与えて学習させる
    – ゲームAIやロボット制御によく使われる

    ## 強化学習の位置づけ

    強化学習は機械学習

    元記事を表示

    Python clickの案外知られていない機能

    # Python clickの案外知られていない機能

    Pythonには[click](https://click.palletsprojects.com/en/latest/)というコマンドラインパーサとして使えるライブラリがあります。同様のライブラリとして以前から[argparse](https://docs.python.org/ja/3/howto/argparse.html)がありますが、clickはargparseよりももっと簡単に使えるライブラリです。
    clickでコマンドラインパーサを書く例は以下になります。

    “`python
    # main.py
    import click

    @click.command()
    @click.option(
    “–count”,
    type=int,
    default=1,
    required=True,
    help=”Number of greetings.”,
    )
    @click.option(
    “–name”,
    type=s

    元記事を表示

    Towers of Hanoi on PostgreSQL

    この記事は[PostgreSQL Advent Calendar 2021](https://qiita.com/advent-calendar/2021/postgresql)の19日目の記事です。

    # はじめに
    冬になるとハノイの塔をやりたくなりますよね。
    しかし、財政難で既製品の購入はできないため、PostgreSQLでなんとかしようと思います。ありがたきOSS!

    ## ハノイの塔とは
    [WikiPedia](https://ja.wikipedia.org/wiki/%E3%83%8F%E3%83%8E%E3%82%A4%E3%81%AE%E5%A1%94)より:
    > ハノイの塔(ハノイのとう、Tower of Hanoi)は、パズルの一種。 バラモンの塔または ルーカスタワー(Lucas’ Tower)[注 1]とも呼ばれる。

    パズルのルールは、「3本の塔があり、ある1本の塔にあるN枚の円盤を上に大きな円盤を載せないようにしながら別の塔に移動させる」というもの。

    頭の体操です!

    ## PostgreSQLで実現
    どうしようかな~と考えて、以下の仕様で作り始めました。

    元記事を表示

    pythonで自然言語処理のためのtwitterから取得したテキストの前処理

    #はじめに
    自然言語処理をやってみようと思い、twitterからテキストを集めました。
    tweepyを使って過去のツイートを取得しましたが、前処理に手間取ったので、その前処理方法を紹介します。

    #困ったこと
    ・絵文字の処理でemojiモジュールを使ったが、取り除ききれなかったものがあった
     unicodeで\uf353や\uf605など
    ・改行をコードを取り除くと文章がつながってしまう
     例
     楽しかった
     いい一日だった → 楽しかったいい一日だった

    #やったこと
    ・「絵文字を取り除く」ではなく「英数字・日本語のみ取り出す」とする
    ・改行コードを読点”。”に置き換える
     twitterテキストでの改行は文の区切りを意味するため

    #実装
    ###絵文字の除去
    reモジュールを使って1文字ずつ英数字・日本語かどうかを判断し、英数字・日本語であれば残す、とします。1行目は半角英数記号、ひらがな・カタカナ、漢字、句読点などの記号の文字コードのコンパイルです。2行目で文字を1つずつ取り出し、判定します。

    “`Python:
    n = re.compile(r”[\u0020-\u007e

    元記事を表示

    ゼロから感染症シミュレーション ~理論,Pythonでの実装~

    誤りがありましたらご指摘よろしくお願いいたします!!
    この記事を書くにあたり参考にさせていただいた文献は最後に参考文献としてまとめさせていただきました.

    #1. 始めに
    今回は感染症の数理モデルであるSIRモデルについて扱う.
    SIRモデルは世界初の感染症数理モデルであり,1927年に提案された[1].

    以下では,SIRモデルの理論の解説,シンプルなPythonでのシミュレーションの実装を行う.(より面白いシミュレーションは参考文献[3]が超分かりやすかったでおすすめさせていただきます.)

    #2. SIRモデルの理論
    ##2.1 モデルの規則
    SIRモデルの規則は次の通りである.
    (1) 初期状態として,人口全体を健康Susceptible(S), 感染者Infected(I), 免疫獲得者Recovered(R)の3グループに分ける.
    (2) SはIから感染し得る.Sが微小時間$\Delta t$の間に感染しIになる確率は,$\lambda \times \rm{隣接するIの人数} \times \Delta t$である.ただし$\lambda$は感染率である.
    (3) I

    元記事を表示

    MP3ファイルをアップロードしてWAVに変換する

    この記事は[PONOS Advent Calendar 2021](https://qiita.com/advent-calendar/2021/ponos) の19日目の記事です。
    昨日は@e73ryoさんでした。

    # はじめに

    同僚と雑談の中で「**MP3のファイルをアップロードしてWAVファイルに変換。WAVファイルをダウンロードできるようにしたいが、どうすればいい?**」と相談を受けたことがキッカケでスタートし、ざっと動作するものができましたので記事にしました。

    開発するにあたり、以下を要件とし、自宅など限定した環境で稼働させることを想定して作成しています。

    + OS: Windows
    + 開発言語: Python
    + そのた: WSLを使わない

    # 完成したもの

    ![完成4.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1447787/04850d80-7a3c-34df-7340-2f7cce03d3b6.png)

    # 開発環境および使用したツール

    + Windows

    元記事を表示

    量子コンピュータとジャンケンする

    $$
    \def\bra#1{\mathinner{\left\langle{#1}\right|}}
    \def\ket#1{\mathinner{\left|{#1}\right\rangle}}
    \def\braket#1#2{\mathinner{\left\langle{#1}\middle|#2\right\rangle}}
    $$
    この記事は[フューチャーAdvent Calender 2021](https://qiita.com/advent-calendar/2021/future) 19日目の記事です。

    # ■ はじめに

    こんにちは、突然ですが量子コンピュータってご存じでしょうか?
    ニュースでたまに耳にしますが、SFチックな響きがあってロマンを感じますよね!

    本記事では話題の量子コンピュータをつかってWebアプリケーションを作ってみます。
    先端テクノロジーを使ってアプリを作るって考えただけでもワクワクしますね!

    それでは早速本題に移ります。

    # ■ 作成したもの
    今回作成するのはジャンケンアプリです。

    その名も**「janQen」**。

    量子コンピュータに

    元記事を表示

    Python/OpenCVを使った車線推定

    # はじめに
    こんにちは、HCB Advent Calendar 2021の18日目を担当する、kudokaiです。
    卒業研究では車幅感覚習得支援システムの提案という研究をしており、研究の中ではPythonを使った車線推定機能を実装しています。
    今回は僕が実装した車線推定について紹介します。

    普段はiOSアプリに関する記事を書いたりiOSアプリを開発したりしています。
    今回、Pythonの記事は初めて書きます。

    # 車線推定方法
    ### Hough変換
    [Hough変換](https://jp.mathworks.com/discovery/image-transform.html)とは画像や動画の中から直線や円を検出するアルゴリズムです。
    OpenCVで提供されているHoughLinesP関数を使用する方法が一番簡単なのかなと思います。
    Hough変換に至るまで、画像のグレースケール化→2値化をしておく必要があります。

    “`python
    lines = cv2.HoughLinesP(edges, rho=1, theta=np.pi/360, threshold=60, m

    元記事を表示

    青空文庫を使って、日本語でよく使われる子音をカウントしてみた

    # TL;DR

    * 日本語でよく出てくる子音が何なのか気になった
    * 青空文庫のテキストデータを使ってカウントしてみた
    * 子音単体だと k が多くて、調音位置でいうと歯茎音が多かった。

    # きっかけ

    私、元々大学院まで言語学研究室に居て日本語の文法を研究しておりました。