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

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

Google Vision APIを用いてOCRをした結果をJSONファイルで保存/読み込みする

# 記事概要

Google Vision APIを用いてOCRをした際の結果を再利用するためにJSONファイルに書き出し、読み込みを行います。

## 本記事の前提条件

環境における前提としてGoogleのVision APIのアクセスキー登録やライブラリのダウンロードが終わっているものとします。

筆者はソースコードも含め下記を参考にしているため、そちらを一度参照するとスムースに本記事が読めると思います。

https://qiita.com/shoku-pan/items/bf5645894803769edc72#vision-api-%E3%82%BB%E3%83%83%E3%83%88%E3%82%A2%E3%83%83%E3%83%97

## モチベーション

Googleの提供するVision APIはかなり良い精度のOCRを可能にしてくれますが、**従量課金制になっているためなるべく少ない回数の呼び出しで済ませたい**という事情があります。

具体的には、OCRのテキスト抽出に限って言うとだいたい下記のようになっています。

– 月に1000画像まで無料
– 以

元記事を表示

ゴルゴ13のISBNリストを取得する

# 概要
くだらない話ですが、所有するコミックのデータベースを作ろうとしてます。
ゴルゴ13は、200冊を超える状況で、「さいとう・たかを」先生が逝去された後も、まだ続いています。

そんなゴルゴ13ですが、ISBNが採用された時期よりも前から出版されているので、ISBNリストを使った書籍情報の検索をしようとしてもISBNが書籍にのっていません。
が、、、、版数が版数なので、ISBNが始まった時期より後に増刷となった場合、古い書籍もISBNが採番されます。

そこで、リイド社のゴルゴ13のページから200冊を超えるゴルゴ13のISBNを取得しようとしてます。
(200冊を超えるISBNのリストがあれば、そこから持っている巻数のISBNを把握すればいい)

# リイド社を見てみる

https://www.leed.co.jp/standardbooks

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/8cbc5921-2aa8-dc7c-8dbe-1d2481a64b8e.

元記事を表示

参院選2022候補者アンケートの検索用スプシの共有とそのデータ分析

参院選挙も近い。国民の大切な権利である国政選挙での投票権をちゃんと活かすために、自分の考えに近い候補者を探したい。

各候補者の考えの違いは、NHKが実施した[参院選2022の候補者アンケートデータ](https://www.nhk.or.jp/senkyo/database/sangiin/survey/)から、大雑把にわかりそうである。大変ありがたい。さらに、その目的のために、NHKがすでに[ボートマッチ](https://www.nhk.or.jp/senkyo/database/sangiin/survey/votematch/)という特設Webサイトを用意している。そのサイトでは、自分自身が候補者と同じアンケートを回答し、その結果と各候補者の一致度が表示される。一致度の計算式も明確に公開されており、大変素晴らしい試みだと思う。

しかし、実際に使って自分の考えに近い候補者を選ぼうとすると、以下の点が気になった。

1. 比例区では、まず政党を選びその政党内での候補者比較しか一度に見られない
1. 同じ回答か否か(一致)で判断するため、例えば自分が「賛成」と回答した設問では候補

元記事を表示

少し外側のキリのいい数値を求める

# 概要

小ネタです。

今回作成するpythonの関数を使うと

“`python
CalcOuterRange([-0.1234, 0.4321]) # 出力:[-0.2, 0.5]
CalcOuterRange([-0.1234, 0.4321], -1) # 出力:[-0.13, 0.44]
CalcOuterRange([-1234, 4321]) # 出力:[-2000.0, 5000.0]
CalcOuterRange([-1234, 4321], -1) # 出力:[-1300.0, 4400.0]
“`

というように少し外側のキリのいい数値を得られます。

# はじめに

測定データの処理で、グラフの表示範囲やパラメータの探索範囲などを自動で設定させるとき、
「この計算値とこの計算値のちょっと外側」
にしておきたいということがあります。

簡単なやり方としては、計算で得た範囲の小さい方が$s_1$で、大きい方が$s_2$なら、
「$0.9 \times s_1$ ~ $1.1 \times s_

元記事を表示

【Python】WebスクレイピングでHTML内のscriptタグにあるJavaScriptの変数(JSON)を抽出したい

Webスクレイピングでは通常、クローラーで取得したHTMLの中から、metaタグにあるページのメタ情報やtableタグにある表形式のデータなどを抽出する。
scriptタグの中に埋め込まれた動的スクリプト内で、varで宣言されたJavaScriptの変数(JSON)に欲しい情報が入っている場合、下記のような方法で抽出できる。

# 環境

Python 3.9
macOS

# コード

“`sample.py
import json
import re
from bs4 import BeautifulSoup as bs

def extract_js_var(soup, js_var):
script = soup.find(‘script’, text=re.compile(js_var, re.DOTALL))
regex = ‘(?:var ‘ + js_var + ‘ = )({.*?})(?:;)’
json_str = re.search(regex, script.string).group(1)
return json.load

元記事を表示

Jupyter NotebookをMacにインストールした方法

Homebrewのアップデートを行ったら(?)Jupyterがなくなってしまった(?)のでインストールした。
以下のことを記す。

– Jupyter Notebookのインストール
– Jupyter Notebookの立ち上げ方
– Jupyter Labについて

図の描き方はまた別記事にしたいと思う。

# はじめに

前提知識は以下の通りである。

– macOS
– python3はすでに入っている

[Jupyter Notebook](https://jupyter.org/)は図を作成するときに使っている。
合う合わないはあると思うが、私は使いやすいと思っている。

# Jupyter Notebookのインストール

Jupyterがなくなってしまった。

~~~
% jupyter –version
zsh: command not found: jupyter
~~~

まずはpython, pipのバージョン確認。

~~~
% python –version
Python 2.7.18
% python3 –version
Python 3.9.12

元記事を表示

Pythonのデコレーターで引数情報や型情報を保持する方法

Pythonでデコレーターを使う際に引数情報やdocstring情報などがエディタやLint上で失われないようにするための小ネタです。

# 何が問題なのか

たとえば以下のような関数があったとします。

“`py
def sample_func(a: int, b: str = ”) -> int:
“””
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
eiusmod tempor incididunt ut labore.

Parameters
———-
a : int
Et dolore magna aliqua.
b : str, optional
Ut enim ad minim veniam, quis nostrud exercitation ullamco
laboris

Returns
——-
c : int
Nisi

元記事を表示

Pythonのインストール[2022/06/28版]

# Pyhonのインストール方法

私自身の備忘録のためにPythonのインストール方法を記載していきます。(2022/06/28 現在3.10.5)

## python公式サイトからダウンロード
– [Python公式サイト](https://www.python.org/downloads/)から`[Download Python x.xx.x]`を選択する。

https://www.python.org/downloads/

– ダウンロードした`python-x.xx.x-amd64.exe`を実行する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2726394/ee156183-fccc-d4ac-483b-460efaf52ed8.png)
上記画像のInstall Nowに該当するボタンを押す。
(もし、Pathを通す必要がある場合は[Add Python 3.10 to PATH]にチェックを入れておく。)

– 完了したらCloseを押す。

以上でインストー

元記事を表示

GoogleCloudRunからGCSにファイルをアップロードする

# VS Codeの設定

もしもCloudRunが初めてで、VSCodeを使っているのなら、このあたりを試してみてデプロイ出来るようにしておくと良いです。

[サンプル アプリケーションからの Cloud Run サービスの作成 | Cloud Code for VS Code | Google Cloud](https://cloud.google.com/code/docs/vscode/creating-a-cloud-run-service?hl=ja)

# ソース

CloudRunように作っています。CloudFunctionsでも手直せば動くと思う。
言語はPythonです。

“`python
import os
from functions.upload_file import upload_gcs
from flask import Flask, request

# pylint: disable=C0103
app = Flask(__name__)

@app.route(‘/upload-gcs’, methods=[‘GET’, ‘POST’])
d

元記事を表示

pythonのバージョン変更方法(aliasとpyenv)

はじめに

pythonを使用して構築する際に、バージョンの変更方法によって違いが発生し、詰まってしまったため、まとめておくことにしました。
AmazonLinux2を使用してpython3.9.2の適用を検証していきます。
デフォルトではpythonコマンドでは2.7.18、python3コマンドでは3.7.10が呼び出されます。

適用パターンは以下の3パターンです。
1.wgetを使用してインストール、aliasで適用
2.wgetを使用してインストール、シンボリックリンクの変更で適用
3.gitを使用してインストール、pyenvで適用

インストール方法(1,2共通)

### python3.9.2のインストール
インストールに必要なツールをインストールします。
“`
$ sudo yum groupinstall “development tools”
$ sudo yum install gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel tk-

元記事を表示

Python3.7以上の環境でpyaudioをインストールする

# Introdaction

1. Python3.7以上でリアルタイム音声認識プログラムを構築する際に、pyaudioが必要になった。
1. `pip3 install pyaudio`ではインストールに失敗した。
– fatal error: ‘portaudio.h’ file not found
– brewでportaudioをインストールしていても、見つけられないとエラーが吐かれる状況
1. python3.7以上の環境でpyaudioをインストールする方法をまとめる
– 多くの情報が既に公開されているが、自分用のまとめとして本記事を作成する

## 環境

– Apple silicon Mac
– macOS Monterey
– Windows 10
– Python3.7以上

## Install for Mac

以下のコマンドで外部のヘッダファイル、ライブラリのディレクトリを指定してインストールすればよ

元記事を表示

DockerでFlask環境構築【Python】

## ディレクトリ構成
“`:ディレクトリ構成
└─VoiceEmotion
├─Dockerfile
├─docker-compose.yml
└─app
├─requirements.txt
└─app.py
“`
## Dockerfile
“`Dockerfile
# pythonのバージョンは任意
FROM python:3.8

WORKDIR /usr/src/app
ENV FLASK_APP=app

COPY /app/requirements.txt ./

RUN pip install –upgrade pip
RUN pip install -r requirements.txt
“`
**FROM**
ベースになるコンテナイメージの指定

**WORKDIR**
コンテナ内の作業ディレクトリを指定

**ENV**
環境変数の設定
必要に応じて使う.

**COPY**
イメージを構築するときに、ローカル環境からコンテナ内にファイルをコピーして設置する

**RUN**
コンテナ内のシェルコ

元記事を表示

[Python] macにDockerを入れてsumyを試してみた

## 背景
「Pythonでテキストを要約してみたい。」

とういうことで、[この記事](https://self-development.info/【python】テキスト自動要約が可能なsumyのインストール/)を参考にPythonのライブラリの`sumy`を使用してみました。

この記事では、macの中にDockerを入れることからします。
python3.6以降+pipの環境がある場合は、[ライブラリのインストール](#ライブラリのインストール)までスキップできます。

## 環境
– MacBook Air (M1)
– macOS Monterey 12.3
– Homebrew 3.4.6

## Docker Desktopの起動
“`sh
brew install –cask docker
open /Applications/Docker.app
“`
`–cask`を付けると、Docker Desktopがインストールされます。

私の環境では、以下のエラーが出ました。
“`
It seems there is already a Binary at

元記事を表示

Windows10 + Python3 + Selenium4でChromeとEdgeをheadlessで起動してみる

# 目的
Selenium4を使用してChromeとEdgeをheadlessで起動してみる
以下の Selenium3での内容の修正点が多すぎなのでメモを残しておく
[Windows 10 + Python3 + selenium + msedgedriver で headless edge(Chromium) を試してみる](https://qiita.com/tabizou/items/249b3c03e5322828e848)
[Windows 10 + Python3 + selenium + chromedriver で headless chrome を試してみる](https://qiita.com/tabizou/items/71911a4d55e9c35b4546)
※BeautifulSoupは整形されたhtmlの出力用に使用している

## モジュールのインストール
“`
pip install -U selenium
pip install webdriver_manager
“`

## サンプルコード
“`
PS > python -V
Pytho

元記事を表示

MacにPythonインストールをしたとき困ったことまとめ

# 概要と経緯
新しいMacBookAirを購入しました。
“`
MacOS Monterey
メモリ:8GB
ストレージ:256GB
“`
もう一台古いMacBookProの環境を整えようとした時のナレッジとして記載します。

## Pythonインストール
– Command Line Toolsのインストール
ターミナルを起動し
“`zsh:zsh
$ gcc
“`
を実行。そうすると
![pic01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409451/7962907b-1401-5dc4-e98f-e6e40b4b01b4.png)
と表示されたので、そのまま`[インストール]`。を押下。
「電源つなげ!」みたいな催促もポップアップで出たりしますがそこは**新Mac!**
無視してお元気バッテリーで続行。少々時間がかかりましたが、無事`Command Line Tools`はインストール完了。

## Homebrewのインストール
お次はHomebrewのインストールです。ター

元記事を表示

DockerFileを利用した「Hello World」のブラウザへの出力方法

# やりたい事
 ブラウザ(ホスト側)からのHTTPリクエストにより、Docker(コンテナ)上のアプリからのレスポンス「Hello World」をブラウザ(ホスト側)に出力したい

■前提
・DockerFileを利用すること
・WebサーバにはPythonのFlaskを利用

■補足
勝手に思っていることですが「ホスト」と「コンテナ」は別世界と捉えると色々理解しやすくなります
※違うかもしれませんが、現実世界とメタバース、みたいな関係?

その別世界に対する「環境構築」までの手順は基本、ターミナルからのCUIベース。
アプリの実行はブラウザ経由です。

# 知りたい事 
大きくは下記の点です

・DockerFileとアプリケーションファイルの関連性
・Dockerを利用したブラウザ経由の通信の仕組み

# ステップ1:アプリケーションファイルを作る
まずは、Docker関係なく、ローカル(ホスト側)で「Hello World」が出力されるAPファイル(hello.py)を用意

“`python:hello.py
from flask import Flask

#Flaskオ

元記事を表示

Windows10 + Python3 + BeautifulSoup4 を試してみる

# 目的
[Yahoo!ニュース](https://news.yahoo.co.jp/)の主要トピックスに対してBeautifulSoupを使って以下を試したときのメモ
・Copy selectorの出力
・Copy XPathの出力
・find、find_allを使った例
検索結果で記述した日付が記述されていない記事は注意が必要
Yahoo!ニュースの構成が変更される頻度が多い??ようなので、まずはtagを検証する

## 使用するパッケージのインストール
“`
PS > pip3 install BeautifulSoup4
PS > pip3 install lxml
“`

## サンプルコード

“`python
# ここからは共通コード。
# Windows Add env PYTHONIOENCODING = UTF-8 & restart vscode
# coding:utf-8

from bs4 import BeautifulSoup
import urllib.request
import re
from lxml import etree
from l

元記事を表示

言語処理100本ノック解いてみた 6

“`python
str1 = “paraparaparadise”
str2 = “paragraph”
def bigram(string):
return [string[i:i+2] for i in range(len(string)-1)]
X = bigram(str1)
Y = bigram(str2)
print(X+Y)
dup = [_ for _ in X if _ in Y]
print([_ for _ in X if _ not in dup],[_ for _ in Y if _ not in dup])
print([[_,__]for _ in X for __ in Y])
if “se” in X: print(“X”)
elif “se” in Y: print(“Y”)
else: print(“None”)
“””
[‘pa’, ‘ar’, ‘ra’, ‘ap’, ‘pa’, ‘ar’, ‘ra’, ‘ap’, ‘pa’, ‘ar’, ‘ra’, ‘ad’, ‘di’, ‘is’, ‘se’, ‘pa’, ‘ar’, ‘ra’,

元記事を表示

pythonのアンダースコア

# pythonのアンダースコア(_)を使う
コードを見ていると所々に出てくるアンダースコア。
変数の頭に付いていたり、関数の頭に二つ付いていたり、どんな意味があるかまとめた。

### 必要のない値を一時的に格納するもの


・for文
“`
# 単純に文字列を5回出力したいだけ。range()から取り出した変数は使わない。
for _ in range(5):
print(“test”)
“`
・return値を返さない
“`
def main():
a = “hoge”
b = “fuga”
return a, b

if __name__ == ‘__main__’:
# aしか出力しない
# bは廃棄される。
a, _ = main()
print(a)

“`

### 関数名や変数名の頭に1つ付いているもの
クラス内メソッドや変数
あくまでも慣例的なので、外部からアクセス可能
importのワイルドカードで読み込まれない

### 関数名や変数名の頭に2つ付いているもの
ネー

元記事を表示

Pythonでポケモン御三家の種族値をソートする

初投稿 & タイトルの通りです。

大学院の研究でグラフを描くために最近Pythonを使っているのですが「どうせなら言語丸ごと習得してしまうか~」と思い立ち、着想から約2~3時間ほどで書きました。

ご指摘やアドバイスの他、「こういう機能作ったらいいんじゃない?」などありましたら是非コメントいただけますと大変有り難いです。

“`python
import pprint

#御三家の種族値のタプルリスト
pokemon_data = [
(“フシギバナ”, 80, 82, 83, 100, 100, 80, 525),
(“メガニウム”, 80, 82, 100, 83, 100, 80, 525),
(“ジュカイン”, 70, 85, 65, 105, 85, 120, 530),
(“ドダイトス”, 95, 109, 105, 75, 85, 56, 525),
(“ジャローダ”, 75, 75, 95, 75, 95, 113, 528),
(“ブリガロン”, 88, 107, 122, 74, 75, 64, 530),

元記事を表示

OTHERカテゴリの最新記事