Python3関連のことを調べてみた2021年03月20日

Python3関連のことを調べてみた2021年03月20日
目次

【Python】Beautiful Soup 4+requestsでインデントされたHTMLを取得する(備忘録)

自分用メモ

# Beautiful Soup 4とrequestsのインストール
“`
pip install beautifulsoup4
pip install requests
“`

# Beautiful Soup 4とrequestsのインポート
“`python
from bs4 import BeautifulSoup
import requests
“`

# URLからrequestsのresponseを取得
変数「url」にリクエスト対象のURLを指定
※この段階ではインデントされていないHTML

“`python
url = “https://qiita.com”
response = requests.get(url)
print(response.text)
“`

# BeautifulSoupでHTMLをインデントして取得
prettify()がHTMLをインデントして取得する関数

“`python
soup = BeautifulSoup(response.text, ‘html.parser’)
print(soup.pretti

元記事を表示

【Python】requestsでcookie情報を取得する(備忘録)

自分用メモ

# requestsのインストール
“`
pip install requests
“`

# requestsのインポート
“`python
import requests
“`

# requestsのオブジェクト作成
変数「url」にリクエスト対象のURLを指定

“`python
url = “https://qiita.com”
session = requests.session()
response = session.get(url)
“`

# cookieを取得
cookie情報すべてを取得
※Webスクレイピングする場合は大抵これが必要

“`python
cookie = response.cookies
“`

# cookieの任意項目を取得
cookie内の任意項目を指定して取得
※Webスクレイピングでcookie内にトークンがある場合などで必要

“`python
item = response.cookies.get(‘_qiita_login_session’)
“`

# requestsでcookie情報を取得

元記事を表示

redirect_stdout で標準出力をキャプチャ (ondryaso/pi-rc522 ライブラリの標準出力を抑制する)

「RaspberryPi + ondryaso/pi-rc522 ライブラリで MyFare を操作する」

では、Mifare NFC リーダ/ライタモジュール RFID-RC522 を RaspberryPi / Python3 で使うライブラリとして ondryaso/pi-rc522 を使いました。

大体はうまくいくのですが、時折 E1 とか E2 という文字列が勝手に標準出力されます。python で CUI プログラムを作っていると致命的。

# 原因

ライブラリのソース中、以下のように特定の条件で無造作に E1 と E2 が print されるようになっています。

https://github.com/ondryaso/pi-rc522/blob/master/pirc522/rfid.py

“`

.
.
.
if i != 0:
if (self.dev_read(0x06) & 0x1B) == 0x00:
error = False

if n

元記事を表示

Metabase APIで変数付きのリクエストを投げる

# はじめに

下図のように、Metabaseで変数を設定したSQLクエリに対して、PythonからAPIを叩いて、クエリ結果を取得します。

![metabase.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329888/74924fc9-6137-dc2a-e7aa-9eb2887d3f1e.png)

# 環境

“`bash

$sw_vers
ProductName: Mac OS X
ProductVersion: 10.13.6
BuildVersion: 17G14042
“`

Metabase への接続については[metabase_api](https://github.com/vvaezian/metabase_api_python)を使用しました。
“`pip install metabase-api“`でインストール済みです。

Metabaseの構築については[こちら](https://qiita.com/dyamaguc/items/1cba8cd11a

元記事を表示

Mac PC へのPython3 導入手順

#1. はじめに

Mac PC には あらかじめPython2.7が導入されています。
今回は 新しいバージョンの**Python3** をMac PCに導入します。

#2. Python3 導入

##2-1. pyenv 導入

###① インストール

今回は **Python3** の導入に、**pyenv** コマンドを使用します。
**brew**コマンドで、**pyenv** を導入します。

コマンドは以下の通りです。

“`
brew install pyenv
“`

###② 確認

**pyenv** の導入が完了したら、
バージョンを表示して、無事導入されていることを確認します。

コマンドは以下の通りです。

“`
pyenv -v
“`

実行例は以下の通りです。

“`
$ pyenv -v
pyenv 1.2.23
“`

##2-2. Python3 導入

**pyenv** コマンドを使用して、**Python3** を導入します。

###① インストール可能 バージョン 表示

**pyenv**コマンドで インストール可能な

元記事を表示

pip install時にERROR: Could not install packages due to an OSError: [Errno 5] Input/output errorが出た

#はじめに
Python, pipでrequirements.txtを使ってパッケージ一括インストール
https://note.nkmk.me/python-pip-install-requirements/
を試みた際、表題のエラーでハマったので、備忘録として対処法を書き残しておきます。

#環境
Windows 10 Home
Docker 19.03
“`docker run -d -it –mount type=bind,source=”$(pwd)”,target=/app nginx:latest“`
にて作成したコンテナ内で行いました。

#コマンドとエラーメッセージ
“`
# pip3 install –user -r requirements.txt
Collecting tensorflow==2.4.0
Downloading tensorflow-2.4.0-cp37-cp37m-manylinux2010_x86_64.whl (394.7 MB)
|████████████████████████████████| 394.7

元記事を表示

【Python】IBM Watson Speech to Text API を使ってみた(初心者向け)

# はじめに
こんにちは、Maiです。
ボランティアで細々と米国本社のシニアマネジメントの翻訳をするという活動を行っています。
Blogは文字なので、翻訳するのは(時間をかければ)まあできるのですが、動画の翻訳となると、
①字幕を書き起こし(動画にはついてるものとそうでないものがある)、
②翻訳し、
③必要なら日本語の字幕をつける

という手順があって結構しんどいので、どうにか楽をしたいなと思うようになりました。
~~字幕がある動画はTranscriptionを作ってくれたらいいんだけど、そんなに親切じゃない。~~

そこで、弊社Watsonの「Speech to Text」という音声認識のAPIを使用して、文字起こしをしてみることにしました。

# 私のスペック、PCのスペック
Me: 開発経験が少ない悲しき自称エンジニア、pythonは勉強中。
MacOS: Catalina
Python: Python 3.8.0

# 前提
Pythonインストール済
IBM Cloudアカウント作成済

# まずはライブラリをインストールしましょ
“`
pip inst

元記事を表示

辞書の値を取得する方法、2通り思いつきますか (Python)?

この記事ではPython3.7を使用しています。またIDE(統合開発環境)はPyCharm2020.3です。

##1. はじめに
 **タイトル通り辞書の値を取得する取得方法、2通り思いつきますか?**
今回は

“`python:question.py
# 今回の記事で使用する辞書
d = {‘apple’: ‘リンゴ’, ‘orange’: ‘オレンジ’, ‘cantaloupe’: ‘メロン’}
“`

 まず1つも思いつかなかった方、大丈夫です。記事執筆5分前の自分もそうだったのでwww。この記事を読み終わる頃には脱初心者です!
 次に1つは思いついた方、素晴らしいです。そしてこの記事を読んで思いつかなかったもう1つの方法を学んで違いを理解しましょう!!
 その次に2つとも思いついた方、すごいです。違いがあやふやな人はこの記事を読んでしっかり理解しましょう!違いも分かる人は「mitsu4310」と検索して自分の他の記事を読んでください!!!
 最後に3つ以上方法が思いついた方、私のような初心者が出る幕はありません。そして別解をコメントで教えて下さい!!!!

##2. 方

元記事を表示

MacでDocker-Selenium(Python)を使って印刷プレビューを介してのPDF保存をやってみた

## 概要
会社で利用している監視サービスで一々Webブラウザを使って監視対象分のサーバーの監視レポートを毎月ダウンロードして顧客に提出ということをしてたので、今まで興味はあったけど手が出せてなかったPythonとSeleniumに入門してついでにこの課題を解決してみた。

## 画面遷移(手動の場合のフローでこれを今回自動化)
1. ログイン画面
– id, passを入力してログインする
2. ダッシュボード画面
– 監視対象のサーバーの一覧が表示されている
– サーバー名をクリックして詳細画面に遷移する
3. 詳細画面
– 月毎の監視レポートのリンクの一覧が降順表示されている
– 一覧上の最新の月のリンクをクリックして監視レポート画面に遷移する
4. 監視レポート画面
– 印刷ボタンがあるので、それをクリックして印刷プレビューを介してPDFを保存
5. 2〜4をサーバーの数だけ繰り返す

## ファイル構成

“`text:ディレクト構成
workspace
└─ dev
└─

元記事を表示

PythonでNamedTupleのようにDictを使えるようにする

# はじめに
pythonによる開発での問題点を3点あげる.
1. 似たような変数名の辞書が何度も利用されるがどのような変数を含んでいるかわからない
2. 何が格納されているかわかったとしても変数の定義がわからない
3. keyの打ち間違いが多発する

このような問題が発生するときにNamedTupleのような構造体を使いたいが,NamedTupleはImmutableな使い方をすべきであり,dictのような使い方をすべきではない.

したがって,今回はdictをNamedTupleのように使うためのコードを紹介する.(改善点はぜひコメントによろしくお願いいたします.)

# コード

“`python
class BaseDict(dict):
def __init__(self, **kwargs):
var_dict = {var_name: getattr(self, var_name)
if hasattr(self, var_name) else None
for va

元記事を表示

zipfileを使って複数のzipファイルをまとめて解凍し、それぞれのフォルダに保存するためのpythonコード

大量にダウンロードしたzipファイルを一気に解凍するという場面が時々あったので、メモとして保存します。

“`python3
import zipfile
import os

path = ‘zipファイルが格納されているフォルダのパス’
output = ‘解凍したデータ保存先のパス’

#ファイル名を取得
files = os.listdir(path)

#ひとつずつ解凍
for i in files:
#zipファイル名のフォルダがなければ新しく作る
if not os.path.isdir(output + i):
os.mkdir(output + i)
#解凍
zf = zipfile.ZipFile(path + i)
zf.extractall(output + i)
“`

これで保存先にそれぞれのファイル名のフォルダができ、解凍したデータが保存されました。

最初にやってしまったミスとして、zipファイルを格納しているディレクトリにファイルでないもの(保存先にしようとしていた空のフォルダ)を置いてしま

元記事を表示

実写版ウマ娘攻略(pythonで競馬予測モデルを作成してバックテストする方法~3章バックテスト編~)

前回作成した予測モデルを使ってバックテストをしていきます。
前回記事はこちらです。
https://qiita.com/umaining/items/769fea8d5fb414d249ab
#全体の流れ
今回の記事では「3.バックテスト」を説明します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1186688/da1cfa06-52dd-851b-aada-5dedf195ff68.png)

#バックテスト
予測モデルでは各馬ごとに1着になる確率を計算します。
バックテストでは、予測モデルの確立を元にして馬券を購入するかどうかを決めます。
下記のソースコードでは予測モデルの確率が30%以上(1位になる確率が30%)の時に馬券を購入するということをしています。
バックテストを実行するときは前回作成したモデルと同じディレクトリで実行してください。
(もし別ディレクトリで実行したい場合はfilenameの箇所を変更してください)

“`python:fit_ai_lgb.py
imp

元記事を表示

実写版ウマ娘攻略(pythonで競馬予測モデルを作成してバックテストする方法~2章予測モデル作成編~)

今回は前回取得した競馬データを使って予測モデルの作成を行います。

前回記事は下記です。
https://qiita.com/umaining/items/be323c1a5e42e0f48987
#全体の流れ
今回の記事では「2.予測モデル作成」を説明します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1186688/da1cfa06-52dd-851b-aada-5dedf195ff68.png)

#モデル作成のイメージ
競馬データを使ってモデル作成をします。
モデル作成する際は、「学習データ」と「予測対象データ」をそれぞれ用意します。
競馬の場合では、「学習データ」に前回人気や前回オッズなどのデータを使用します。
モデルの性能は学習データの質に掛かっているので、ここでどのようなデータを入れるかが一番の肝となります。
予測対象データは着順やタイムなどを指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.

元記事を表示

実写版ウマ娘攻略(pythonで競馬予測モデルを作成してバックテストする方法~1章データ準備編~)

ウマ娘のブームにあやかって、競馬予測に興味を持ってくれる人がたくさん増えてくれると嬉しいです。
python3を使って競馬の予測を行い、予測結果に基づいて購入した結果(バックテスト)を処理するまで記載します。
今回は予測に使用するためのデータを準備するところまで説明します。
(正直、下準備するところまでが一番大変でした。本記事がご参考になれば嬉しいです)

#全体の流れ
今回の記事では「1.データ準備」を説明します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1186688/36aa44f6-9a69-6b9a-90e2-781bee28a137.png)

#競馬DBの準備
まず、競馬予測するためにはレース情報のデータが必要となります。
今回はJRAVANという有料の情報を使って予測していきます。
https://jra-van.jp/
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0

元記事を表示

pythonでタプルを直接比較してみる

ふと気になったのでメモ。
環境は macOSX10.15.7 + pyenv + python3.8.3です。

解決方法としては以下の通りでしょうか。
まあロジック自体見直したほうがよいと思います。

– `set()`でうまいことやる
– ループでやる
– `__lt__` とか `__gt__`を再実装する

#### 双方のリストが同値のとき
“`
>>> a = (100, 200, 300)
>>> b = (100, 200, 300)
>>> a == b
True
“`
これはまあ当然。

#### リストの要素数が異なるとき
“`
>>> a = (100, 100, 100, 100)
>>> b = (100, 100, 100)
>>> a > b
True
“`
これも当然。

#### リストの値が異なるとき
“`
>>> a = (100, 100, 100, 100)
>>> b = (200, 100, 100, 100)
>>> a < b True >>> a = (100, 100, 100, 100)
>>> b

元記事を表示

気象庁10分データJSON取得

# 最新の10分値を取得したい

※間違っていても無保証
※利用方法は気象庁の規約に順ずる。

気象庁のホームページがリニューアルされて、jsonでデータを取得できることが話題になっています([例えば](https://qiita.com/e_toyoda/items/7a293313a725c4d306c0))。

例で紹介されている

“`bash:引用
https://www.jma.go.jp/bosai/amedas/data/map/{latest_time}.json
“`

のURIの場合、気圧が取得できないのが悩ましいところでした。

少し気象庁のページを見ていると、次のURIでは各アメダス観測点の3時間分の10分観測値が取得できるため、Pythonで取得してみました(追記3/17:よく読むと紹介記事の末尾に既出でした)。

“`bash:
https://www.jma.go.jp/bosai/amedas/data/point/{amedas_number}/{latest_date}_{divisionNumber}.json
“`
ここで、“`{am

元記事を表示

「Python3」LINEBOTで入力待機を実装する(PostgreSQL使用)

#はじめに
※はじめて記事を書いたので不足している情報があれば指摘してください。
また、プログラムの知識も多く無いのでまずい書き方してたら教えてください。

#おことわり
この記事に掲載しているプログラムソースはコメントなどで
この記事URLを記載すればどのような用途で使ってもらっても構いません。
ただしこのプログラムを使って発生した、いかなるトラブルも責任を負いません。
自由に使える反面それに伴う責任はすべてあなたが負うと考えてください

# 環境
M1 macOS Big Sur
DB PostgreSQL(gigalixir)
Python 3.9.2
psycopg2==2.8.6

#前置き

ユーザーから値を受け取ってDBへ保存したいが、
そもそも入力待機させる方法が分からないのでググると”line bot セッション”という
ワードが出てきました。これをググるとサンプルコードが2つ(java もしくはPytohn)
ヒットしましたが、

_人人人人人人人人人人人人人人_
> 書いてある内容分かんない <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄

元記事を表示

Pytorchのtensorが占有しているGPUのメモリを開放する方法

# 結論
GPUに移した変数をdelした後、torch.cuda.empty_cache()を叩くと良い。

# 検証1:delの後torch.cuda.empty_cache()を叩きGPUのメモリを確認

“`
Python 3.7.8 | packaged by conda-forge | (default, Jul 31 2020, 02:25:08)
[GCC 7.5.0] on linux
Type “help”, “copyright”, “credits” or “license” for more information.
>>> import torch
>>> torch.__version__
‘1.6.0’
>>> import GPUtil
>>> GPUtil.showUtilization()
| ID | GPU | MEM |
——————
| 0 | 0% | 7% |
>>> a = torch.rand(1, 1000, 1000, 1000).to(“cuda”)
>>> GPUtil.showUtiliz

元記事を表示

[Python] リスト内包表記

# 概要
1: リスト内包表記とは
2: リスト内包表記の使い方①(基本型)
3: リスト内包表記の使い方②(基本形+if文)

最近、リスト内包表記の使用頻度が増えてきて、なぜ使用した方が良いかを実感できたため、備忘録として記載。

# 検証環境
OS:18.04.5 LTS
Python:3.6.9

## 1: リスト内包表記とは
* for文などの反復処理を比較的シンプルに書くことのできる記法である。
* for文を使用してループ処理するよりも、実行速度が早い
* 関数型言語の記法
※ Python言語は、オブジェクト指向PGと関数型PGの両面の特徴を持つ

## 2: リスト内包表記の使い方①(基本型)
#### 基本の型

“`python
[ 式 for 繰り返し変数 in シーケンス ]
“`

#### 例1: 文字列(string型)で格納されているリストを数値(int型)に変換する

“`python

# データ
point_list = [ ’80’, ‘100’, ’20’, ’30’, ’40’ ]

# 実行
point_list = [int(

元記事を表示

二重和の交換が苦手なあなたへ

# はじめに
数学を学んでいると, 二重和の交換を行う場面がよくあります.
例えば次のようなものです.

“`math
\sum_{n = 0}^{T}\sum_{k = 0}^{n}a_{n, k} = \sum_{k = 0}^{T}\sum_{n = k}^{T}a_{n, k}
“`

慣れてしまえばどうってことのない等式変形なのですが, 初見ではなかなか理解することができないものです.

本記事では二重和の交換, 特に和のインデックスが独立していない場合について解説を行います.
また等号が正しいことを確認するために, Pythonを用いて簡単な検算を行います.

高校数学レベルで理解できるので, お気軽にご覧いただければと思います.

また, 大学で学ぶ線形代数では二重和の計算を行うシーンが多々あります.
この春から大学生になる方々は是非本記事で二重和の交換に対する苦手意識を無くしていただきたいです!

# 和のインデックスが独立しているケース
上記のような二重和を考える前に, まずはもっとシンプルな以下のケースを考えます.

“`math
\sum_{n = 0}^{

元記事を表示

OTHERカテゴリの最新記事