Python3関連のことを調べてみた2022年07月31日

Python3関連のことを調べてみた2022年07月31日

Python3: Yahoo 郵便番号検索API の使い方

参考ページ
[郵便番号検索API](https://developer.yahoo.co.jp/webapi/map/openlocalplatform/v1/zipcodesearch.html)

“`py:get_address.py
#! /usr/bin/python
#
# get_address.py
#
# Jul/31/2022
#
# ——————————————————————
import sys
import os
import json
import requests
from dotenv import load_dotenv
# ——————————————————————
sys.stderr.write(“*** 開始 ***\n”)
#
dotenv_path = ‘.env’
load_dotenv(dotenv_path)
APPID = os.env

元記事を表示

Python Beautiful Soupでパースで文字化けしたときに読む記事

# 結論

:::note
BeatutifulSoupの第一引数に、requests.getのレスポンスをresponse.text、response.encodingでエンコーディングして文字列型で指定すると文字化けになることがある。文字化けを回避するには、response.contextとしbytes型を指定する。
:::

理由は、レスポンスHTMLに問題がある。原因は、Content-Typeのエンコーディング(charset)がおかしかったり、指定されてなかったりするからだ。

:::note warn
BeautifulSoupはstr型かbyte型で指定できる。
:::

#### requests側でエンコーディング(文字列型で指定)
– **response.encoding** : Content-Typeのエンコーディング
– **response.text** : response.encodingでデコードされたstr型のレスポンスボディ

#### BeautifulSoup側でエンコーディング(bytes型で指定)
– **response.cont

元記事を表示

既存のDjangoプロジェクトを使ってDjango+Nginx+MySQL環境をDockerで構築する

# 目標
既存のDjangoプロジェクトをdocker-composeで起動する。
# 筆者の環境
| 項目 | バージョン |
|–|–|
|wsl2|Ubuntu 20.04 LTS|
|Docker|version 20.10.17, build 100c701|
|docker-compose|version 1.29.2, build 5becea4c|
# 対象
1. 既にDjangoのプロジェクトを持っていてGitHubにあげている。(GitHub専用ではないのでGitさえ使えれば良いです。)
1. Dockerが使える
1. docker-composeが使える
# 対象かどうかをチェック
Dockerが使えるかどうか
“`bash
$ docker –version
Docker version ~.~.~, build ~~
“`
docker-domposeが使えるかどうか
“`bash
$ docker-compose –version
docker-compose version ~.~.~, build ~~
“`

元記事を表示

Python3: テキストをルビ付きの HTML に変換

次のページを参考にしました。
[ルビ振り](https://developer.yahoo.co.jp/webapi/jlp/sample/sample10.html)

次のようにルビを振ります。
>「最後」のルビは誤りです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179446/2f6f7ff0-c667-227e-67c0-f5aadb259d96.png)

“`py:add_ruby.py
#! /usr/bin/python
#
# add_ruby.py
#
# Jul/29/2022
# ——————————————————————
import sys
import os
import json
from urllib import request
from dotenv import load_dotenv

from parse_results import

元記事を表示

Pythonで自分専用のALEXAを作りました

# 1.はじめに

AmazonのAlexaをpythonで作りたいと思い、試行錯誤を繰り返し、ようやく出来上がりました。
オリジナルのAlexaとはほど遠いですが、条件分岐を記述することである程度の質問には答えてくれました。
これからも改良を続けていきます。

# 2.環境
windows10

# 3.準備

## Speech_recognitionのインストール
“`
$pip install speechRecognition
“`
## pyttsx3のインストール
“`
$pip install pyttsx3
“`
## pywhatkitのインストール
“`

$pip install pywhatkit
“`
## wikipediaのインストール
“`
$pip install wikipedia
“`
# 4.実装

“`main.py
import speech_recognition as sr
import pyttsx3
import pywhatkit
import wikipedia

recognizer = sr.Recogn

元記事を表示

Python3でRM mini3をコントロール

以前はBlackBeanControlなどにPython2が必要だったのが、
Python3だけで使えるようになったのでセットアップメモ

# 環境
Ubuntu 22.04
Python 3.10.4
RM mini 3

Raspberry Piでも確認
 Kernel version: 5.15
 Debian version: 11 (bullseye)
 Python 3.9.2

# 前提
既にRM mini 3がネットワークに繋がっていること。

# python-broadlinkインストール

pipでpython-broadlinkをインストール

“`bash
sudo apt install git pip
pip3 install broadlink
“`

必須ではないがテスト用にcliを取ってくる

“`bash
cd
git clone https://github.com/mjg59/python-broadlink.git
cd python-broadlink/cli
“`

#### 動作確認
こんな感じでRMMINIが見つかればO

元記事を表示

Python チュートリアル第4版のそのままでは動かないコードに加筆して解説する試み

Python 3 エンジニア認定基礎試験の公式テキストとして、オライリーのPythonチュートリアル第4版が指定されています。

しかしチュートリアルとはいいつつも完全な初心者が読むにはやや不親切な場所が目立ちます。

特にそっくりそのまま写しても実行できないコードが何の注意書きもなく書かれているのは初心者泣かせです。
なので、私NMRが(自信はありませんが)加筆することで最低限動くコードとしてみようかなと思います。

私自身Python初日かつ、経験は浅いので修正箇所を見つけた場合はなるべくわかりやすく教えていただけると助かります。

また、熟練者から見ると「その言葉遣いは誤解を招く」などあると思います。
そういった表現の訂正も歓迎です。

### 第4章 4-2 P24のfor文

このコードで筆者が言いたいことの意訳。

Pythonを書いている時に「コレクション(リストやセットのこと)に要素を追加、削除したい」ということがあると思います。
例えば100人の顧客リスト「UserListA」の女性だけを削除して、男性だけの「UserListB」を作りたいなどです。
直感的に考える

元記事を表示

VSCodeでPython書いてる人はとりあえずこれやっとけ〜

## はじめに
Pythonはコードが汚くなりがち(個人的にそう思う)
そんなPythonくんを快適に書くための設定を紹介します。

## 拡張機能編
ここでは **Pythonを書きやすくするため** の拡張機能を紹介していきます。

### 1. Error Lens
image.png

#### before
「コード書いたけど、なんか波線出てるよ?」
記述に問題があった場合、デフォルトでは波線が表示されるだけ。。。
image.png

元記事を表示

OpenAI gymでAtariをインストールするまで

gymの仕様変更に伴って,Atariのインストール手順が少し変化したので,自分用のメモ
## インストール方法
“`shell
pip install gym[atari]
pip install autorom
pip install gym[accept-rom-license]
“`
gym経由でatariをダウンロードするのに加えて,自前でAtari ROMをインストールする必要がある.一応,ROMの使用は研究目的のみ可みたいなことが書いてあったりするので,その辺を注意する必要がある.

## 備考
gym==0.19.0だとROMをインストールしなくても,gym[atari]だけでAtariを動かすことができる.ただし,Defenderのゲームだけgym.makeするとハングアップする現象が確認されたので,もしDefenderで実験したい場合は上記で示した最新パージョンでのセットアップを行う必要がある.

元記事を表示

DjangoのWebアプリケーションにユーザ認証を追加する(django-allauth)

# 1. はじめに
前回の「[DjangoでHello Worldを表示する](https://qiita.com/t-shirayama/items/bc18d924dc672c7215cd)」で作成したWebアプリケーションにユーザ認証を追加していきます。

# 2. Djangoのユーザ認証について
Djangoは標準でユーザ認証システムを搭載しています。Djangoの複数のビューを使って、ログイン、ログアウト、パスワード管理を行うことができますが、認証ビューに対してデフォルトのテンプレートはありません。
そこで今回はテンプレートも含まれるdjango-allauthを利用し、さらに簡単にユーザ認証を追加します。

# 3. django-allauthのインストール
pipコマンドでdjango-allauthをインストールします。
“`
pip install django-allauth
“`
# 4. setting.pyの変更
setting.pyにユーザ認証の設定を追加します。追加や変更していない箇所は省略しています。

“`setting.py
import

元記事を表示

スクレイピイング途中のAttributeError: ‘WebDriver’ object has no attribute ‘find_element_by_id’の解決策

## 課題
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1446396/1bd0fa63-0fc3-72f5-8ea3-0dc2ecb6de98.png)
JupyterLabでスクレイピングを行おうとしたら
AttributeError: ‘WebDriver’ object has no attribute ‘find_element_by_id’
とのこと。

## 仮説
・タイプミス
・取得しようとしてる場所がおかしい

## 原因
結局仮説は外れており、ぐぐったらすぐ出てきた。
seleniumのバージョン4以上から、find_element_by_xxxのメソッドが使えないみたい。
以下コマンドでバージョンを確認してみると…

“`
pip list
“`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1446396/5a7b6657-11db-fedb-18f3-a

元記事を表示

投稿の前に

投稿の前に,単純な準備を

コードブロックについて

単に  \`\`\`  とする人が多いですが,言語により,
たとえば Python ならば  \`\`\`Python  としましょう

注釈記号  # の後には 半角空白を置きましょう

その他,プログラムの書式については,多くありますが,たとえば

https://python.keicode.com/lang/control-basic-rule.php

その他を見ましょう。

人様に見せるプログラムは,動けばいいというものではないのです。

元記事を表示

`python get-pip.py`実行時にエラー(This script does not work on Python 3.6 The minimum supported Python version is 3.7.Please use https://bootstrap.pypa.io/pip/3.6/get-pip.py instead.)

`python get-pip.py`実行時にエラー

“`
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
$ python get-pip.py
ERROR: This script does not work on Python 3.6 The minimum supported Python version is 3.7. Please use https://bootstrap.pypa.io/pip/3.6/get-pip.py instead.
“`

エラーログのうち、以下に素直に従うことで解決
> `Please use https://bootstrap.pypa.io/pip/3.6/get-pip.py instead.`

“`
$ curl https://bootstrap.pypa.io/pip/3.6/get-pip.py -o get-pip.py
$ python get-pip.py
# OK
“`

# 参考

https://www.bioerrorlog.work/

元記事を表示

Flask-Limiterインターフェースのアクセス周波数制限

# Flask-Limiterインターフェースのアクセス周波数制限

flask-limiter-サードパーティの周波数制御プラグイン
ドキュメント:[FlaskLIMITER](https://flask-limiter.readthedocs.io/en/stable/)
フラスコリミッターは、クライアントのアクセスレートを制限するフラスコ拡張機能です。アクセス(速度)制限をカスタマイズして、制限をトリガーするリクエストを除外できます。通常、クローラーを制限するために使用されます。

## 実現方法

“` python

# -*- coding: utf-8 -*-
from flask import Flask
from flask_limiter import Limiter
from flask_limiter.util import get_remote_address
app = Flask(__name__)
limiter = Limiter(
app,
key_func=get_remote_address,
# 1日に何回、1時間

元記事を表示

【Python】娘(当時1歳半)との尊い会話シミュレーター

## 概要

娘(当時1歳半)との尊い会話のシミュレーターを、Pythonで再作成しました。

ExcelVBAバージョンはこちら。

https://qiita.com/AnPanda/items/da66bbf657e8712f1322

## コード

“`python
import random

words = [“ばなな”, “もも”, “すいか”, “りんご”, “ぱんだ”,
“いぬ”, “ねこ”, “たこ”, “いか”, “なっとう”]
n = random.randint(1,6) #1-6でランダム

for i in range(n): #質問を最大6回繰り返す
nani = input(“なーにーなーにー? >>”)

if nani == “”: #空白の場合、再度質問
continue
elif nani in words: #単語リストに存在する場合、応答
print(nani + “!”)
else: #単語リストに存在しない場合
yesno = input(“

元記事を表示

[公開版]AtCoder Beginner Contest せっかくだから書いたコードを公開(随時更新)〜Python編〜

# AtCoder Beginner Contest 254
https://atcoder.jp/contests/abc254/tasks/abc254_a
## A – Last Two Digits
“`python
n=input()

print(n[-2]+n[-1])
“`

# エイシングプログラミングコンテスト2022(AtCoder Beginner Contest 255)
https://atcoder.jp/contests/abc255/tasks/abc255_b
## B – Light It Up
“`python
import math

n,k = list(map(int,input().split()))
a = list(map(int,input().split()))
#全員の座標
coordinate=[]

#n回
for i in range(n):
x = list(map(int,input().split()))
coordinate.append(x)

#rの最大値を保存する変数
r=10**100

元記事を表示

ラズパイで作る防犯システム

# こんな感じのが出来上がります
https://drive.google.com/drive/u/0/folders/167T2ZkFCb-YmOti_iWxH_3-KOo-6vbMA

# 動機
自分が外出時誰かが家に侵入したことを報告し、その侵入者を撃退するため。

# 目的
Webカメラと人感センサーで侵入者を感知、それと連動して圧電ブザーを鳴らしたり人の声をopenjtalkで侵入者を撃退する。同時にLINEで侵入者の年齢、性別、顔写真を主人に報告する防犯システムの開発。

# 機能ポイント
人感センサーが反応すると、webカメラが侵入者の顔を撮影。
侵入者の顔をディテクトする。
侵入者の年齢を判定。
侵入者の性別を判定。
感知したことで圧電ブザーによって警報音を出す。
圧電ブザーの音量、音程を調節するため、用意された抵抗の中で最小の200Ωにセット。「ドレミファソラシド」とメロディーを奏でる。
スイッチを押すことで、監視をスタートさせる。
スピーカーでopenjtalkツールによって人間の声を発する。
(例えば、「監視をスタートします。」など)

# システムアーキテ

元記事を表示

pythonコマンドが効かない

さあこれからpythonの勉強していくぞ!って時にいきなり出鼻をくじかれたことのメモ

## 前提条件
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1446396/07c2cc73-2983-c112-50e9-a9b571219b3f.png)

## 発生した問題
まずpythonのバージョンを確認しようと思って
“`
python -V
“`
を実行するが
“`
zsh: command not found: python
“`
となる。え?タイプミスか?と思ったが絶対それはない。
pythonがインストールされてないんだぁと思ってインストールするが、それでも同じ結果。

少しぐぐった結果以下コマンドで確認すると…

“`
python3 -V
“`
“`
Python 3.9.13
“`
あーやっとバージョンが出た。

## 原因
どうやらM1 macのアップデートでpython2が削除されていたようでした。
それによってpythonコマンドが効かず、py

元記事を表示

Pythonで学生証を読ませる(felica, nfcpy)

### はじめに…
課題でfelicaが組み込まれた学生証をタッチすることで入退室の管理システムをPythonで作ることになり、その備忘録的なもので残します…
最終的にはRaspberry piで実行することになりますが、デバッグの関係でMac環境で進めていますが、動作自体は同じなので触れません。

## 下準備
### nfcpyインストール
nfcのライブラリ入れときます。
“` pip install nfcpy “`
Mac環境ではこれだけでおしまいなのですが、ラズパイではこのほかにやることがあります。

ラズパイで“`lsusb“`を実行して、リーダーを確認します。
今回使うリーダーは`RC-S380`通称”パソリ”なので
`Sony Corporation RC-S380/P`
ここの`ID xxx:yyy`は後で要るのでメモっておいた方がいいです。(後々のために)

次に、`cd /etc/udev/rules.d/`にアクセスして`touch nfcdev.rules`を作ってその中に以下のものを保存します。なお`xxx`と`yyy`は上記で出したものを

元記事を表示

python cheatsheet

# 1. 標準ライブラリ
[Python 標準ライブラリ](https://docs.python.org/ja/3/library/index.html)

“`base.py
# オブジェクトの型を判定する
type()
# listに要素を追加する
list=[]
list.append(“XX”)

# すべての要素を削除
list.clear()

# インデックス・スライスで位置・範囲を指定して削除する

#リストの作成
l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

del l[0] # 最初を削除
print(l)
# [1, 2, 3, 4, 5, 6, 7, 8, 9]

del l[-1]
print(l) # 末尾を削除
# [1, 2, 3, 4, 5, 6, 7, 8]

“`
### 1.1. 値
|データ型 | 例|説明|
|—|—|—|
|int |120|整数|
|float |3.1415|浮動小数点数|
|str |”test”| 文字列

元記事を表示

OTHERカテゴリの最新記事