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

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

【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),

元記事を表示

DockerでCentos7 Python3.6の環境を構築 & Jupyter Lab

# 構築内容
“`
Centos7
Python3.6
Jupyter Lab
“`

# クローン
以下リポジトリをクローンする
https://github.com/yamada-ham/centos7_python3.6

# コマンド ビルドして起動
“`
$ docker-compose up -d
“`

# コンテナに入る
“`
$ docker-compose exec centos bash
“`

# Jupyter起動
“`
$ jupyter lab –ip=0.0.0.0 –port 9999 –allow-root
“`

元記事を表示

【音声認識】MFCCからlog-mel スペクトルで深層学習をしたら正解率が上がった

本記事では、[MFCC(メル周波数ケプストラム係数)入門](https://qiita.com/tmtakashi_dist/items/eecb705ea48260db0b62)の記事で見かけた[Deep Learning for Audio Signal Processing](https://arxiv.org/abs/1905.00078)の論文で特徴量抽出をMFCCからlog-mel スペクトルにして深層学習にするとよい、というヒントから実践してみた記事です。

# メル尺度
メル尺度は、定性的には人間の音高の知覚的尺度です。数式的定義は次のようになります。

“`math
m = m_{o} \log\left(\frac{f}{f_o} + 1\right)
“`

ただし、$f_o$はパラメータの一つの周波数パラメータで、$m_o$は「1000Hzは1000メル」という制約から導かれる式、
“`math
m_{o} = \frac{1000}{\log\left(\frac{1000\rm{Hz}}{fo} + 1\right)}
“`
で算出される従属パラメー

元記事を表示

attributeに指定するlocationIdは、locationのlocationIdではない(GoogleMyBusiness API)

# 前置き
GoogleMyBusinessのBusinessInfomationAPIでlocationを更新する際は、location_idを指定する。
locations.attributesを更新するには以下のように行う。

“`py

location_location_id = location.get(“name”).split(“/”)[-1]
attr_response = self.api.attributes.get(location_id)
attribute_location_id = attr_response[“name”].split(“/”)[1]

attribute = gen_attribute(attribute_location_id)

# attributesAPIにpatchでリクエストするとattributesを更新できる
response = self.api.attributes.patch(location_location_id, attribute, field_mask)

“`

attributesを更新する際に

元記事を表示

カスタムモデルを sagemaker neo コンパイルしようとしてハマった

## 表題の通りコンパイルしようしてハマった以下エラー

“`py: error
ClientError: InputConfiguration: Unable to load provided Keras model. Error: Unknown layer: Functional For further troubleshooting common failures please visit: https://docs.aws.amazon.com/sagemaker/latest/dg/neo-troubleshooting-compilation.html
“`

– 原因は、カスタムモデルのネスト構造をフラット処理しようとした時に、tensorflow のバージョンを違うものにしていたので、エラーが出ていた。
バージョンを統一することで解決。

しかし、わかりづらいエラーの内容にハマった。面倒くさい。。。(笑)

元記事を表示

OTHERカテゴリの最新記事