- 1. beautifulsoupで[特定の親要素]配下の[特定の子要素]だけを取得する方法
- 2. Ubntu16.04.7にPython3.9をインストール
- 3. 【2022】APIのAPI(サイト付き)を作った。PythonのBottleで。
- 4. pythonを利用して画像から文字認識をする。
- 5. 【標準入力】ユークリッドの互除法で最大公約数をもとめる【python3】
- 6. python3の私がよく忘れる演算子
- 7. じけい?れつ
- 8. 初めてQiskitを使ってからQiskitで量子機械学習ができるようになるまで 〜パート5〜
- 9. 【最新のPyScript】HTMLにPython処理記述!ブラウザ表示をJavaScriptみたいに埋め込めるらしいので試してみた
- 10. Pythonこれだけ押さえとけ!!
- 11. SPIKEプライムの軌跡をPythonで描画する
- 12. [Python] 辞書型とかのネスト先のデータを取得する方法
- 13. B – Iron Bar Cutting AtCoder
- 14. 【python3】リストをintに変えて出力したい場合【標準入力】
- 15. About python class constant and scope
- 16. Amazon Linux2にPython 3.10をインストールした時のメモ
- 17. 【Linux】Python3.10.4 をソースからビルドする方法と、注意点いくつか【Python3.10】
- 18. 指数バックオフ
- 19. seleniumでリンク(aタグ)をクリックできないときの対処
- 20. djangoを使ったAPI開発を理解する[part1 目的の整理と環境構築]
beautifulsoupで[特定の親要素]配下の[特定の子要素]だけを取得する方法
## やりたいこと
(備忘録を兼ねての内容なのであしからず)ターゲットとするhtmlから、繰り返される親要素(タグ)のうち、特定の「id」に合致するものを取得。
さらに特定の「class」に該当する子要素(タグ)を取得したい。
※「id」、「class」と記載ありますが、あくまで今回やりたかったケースなので、他の組み合わせも可能## やったこと
beautifulsoupのfindメソッドを連結させることで対応できました。簡単にいえば
find(親要素).find(子要素)
ですね。“`python:
from selenium import webdriver
from bs4 import BeautifulSoup
import rebrowser = webdriver.Chrome((r’C:\Users\[ユーザ名]\chromedriver.exe’)
browser.get([目的のURL])html = browser.page_source
soup = BeautifulSoup(html,’html.parser’)#子要素の名称
Ubntu16.04.7にPython3.9をインストール
## 初めに
備忘録として残します!## opensslをversionアップする
“`bash
cd /usr/local/src
sudo wget https://www.openssl.org/source/openssl-1.1.1o.tar.gz
sudo tar xvf openssl-1.1.1o.tar.gz # 解凍
cd openssl-1.1.1o
sudo ./config # sourceをコンパイルしてインストールする
sudo make
sudo make install
which openssl # opensslの場所を確認
ldd /usr/local/openssl # opensslの共有ライブラリの確認
“`
* wgetを行うダウンロード先は、確認しましょう。
* 共有ライブラリの確認の際、not foundとなっている場合、下のようにldconfigにキャッシュ対象を追加するを参照する## ldonfigにキャッシュ対象を追加する
“`bash
cd ld.so.conf.d/
sudo vim openssl-1.
【2022】APIのAPI(サイト付き)を作った。PythonのBottleで。
# 自己紹介
我の名はふわふわ羊。
ふわふわ~。
C#でゲームを作ったり、Pythonでサイトを作ったりしている野生の羊。# さくっと本題。
http://apis.uvs.jp/
↑GUIサイト
http://apis.uvs.jp/index.py/API
↑APIエンドポイント掲題の通り、APIのAPIを作った。
~~しかし、rapidapiがあるから、いらないんじゃないか?~~
とりあえず、世の中にはAPIがたくさんあるので、びびっと来たものだけをチョイスして登録してある。これを登録すべき!というものがあれば、コメントもしくはメールを頂きたく。にんにん。
# 【これから】
GUIサイトについてだが、やはり視認性を良くすべきだ。
CSSやデザインを改善したい。
それと、もっと楽しく出来ないか!?
例えば「いいね」機能が出来たらみんなハッピーなんじゃないか!?
でも「いいね」を連投されたらどうするんだ!?
あああああ!!!!
ふわふわ~!!!!!*サイトに皆さん書き込んでみてくださいね。
# 【所要時間】
全部込みこみで6時間くらいかかった。
やはりPyth
pythonを利用して画像から文字認識をする。
# 目的
python + Tesseractによる画像処理をOCRで試し、使い勝手を調査します。google ドライブのOCRを使用した場合、画像内の文字認識がかなりの高精度で判断でき、便利なことが分かりました。
ただ、不便なこともいくつかありました。
・複数の画像の処理をする場合、手作業に時間がかる。
・文字認識までに時間がかかる。
・余計なスペースが入る。# OCRとは
OCRは、Optical Character Reader の略で、画像データの文字部分を認識し、デジタルの文字データに変換する光学文字認識機能のことです。例えば、jpgやpngなどの画像データの拡張子ファイルから文字部分を取り出して、書かれている文字をテキストデータにできるようなイメージです。
# 環境
Python version:3.9.7
OS:
【標準入力】ユークリッドの互除法で最大公約数をもとめる【python3】
# ユークリッドの互除法とは
2つの自然数の最大公約数を求める方法の1つ## 使いどころ
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1212456512
# 互除法のやり方
「割り切るまで二つの自然数を割り続ける」やり方を説明する。
①「2つの自然数のうち大きい数÷小さい数」する。
②前の手順の除数(最初は「2つの自然数のうち小さい数」)を前の手順の余りで割る。
③以上の手順を余りが0になるまで繰り返す。
余りが0のときの除数が最大公約数である。※最大公約数とは余りが0になる上に一番大きな「割り切る整数(約数)」で一番大きな「割る方も割られる方も割ることが出来る数(公約数)」
※除数は割る方の数の事である。a÷bのbの方。正式な言い方は調べると出ます。
私が噛み砕いて理解する分には上記の※の文章になります。# pythonで表現するユークリッドの互除法
“`python
a,b=(int(x) for x in input().split())#数字にするため。input(),input()
python3の私がよく忘れる演算子
`//`:整数除算。小数を切り捨てする除算。
`**`:べき乗「αの何乗」

のことを「a のべき乗」という
じけい?れつ
Kaggle本
時系列データの扱い3.10
時系列データのバリデーション手法5.3以下の観点から捉える。
1.時間情報を持つ変数があるかどうか
2.学習データ、テストデータが時系列で分かれているかどうか
3.ユーザーや店舗といった系列ごとに時系列の目的変数があり、ラグ特徴量が取れる形式であるかどうかケース1(1に当てはまる場合)
・ユーザーの属性や過去の行動ログが与えられる、
・予測対象は1ヶ月以内に解約するかどうか
・ある時点のユーザーを分割して、学習データテストデータが作成されている。
ケース2(1と2に当てはまる場合)(自分のバイトはこれ)
・ユーザーの属性や過去の行動ログが与えられる
・予測対象は1ヶ月以内に解約するかどうか
・テストデータはある時点のユーザ全体で、学習データとして、過去の各月ごとに月初ごとに存在するユーザーとその月内に退会したかどうかが与えられる。
ケース3(1、2、3に当てはまる場合)
・ユーザーの属性や過去の行動ログの他に、ユーザー過去の利用時間が日毎に与えられる。
・予測対象は日毎の利用時間
・テストデータはある時点のユーザー全体と将来の一定期間
初めてQiskitを使ってからQiskitで量子機械学習ができるようになるまで 〜パート5〜
# QSVMによる3値分類
いよいよ最後のパートとなります!ここでは、前回予告した通り、Scikit-Learnのワインの数値データセットを用いて、3値分類を行います。1. 2つの特徴量で量子SVM、古典SVMそれぞれでできた超平面を可視化し、モデルの性能を評価したものを比較する
2. 特徴量を3つに増やし、ZZFeatureMapの中のリピート数、もつれの型の2つのパラメータを変化させてその違いを比較する
3. ZZFeatureMapのパラメータを、リピート数4、もつれの型を循環型にフィックスし、特徴量の次元を変えて比較するの3本立てですので、一つ一つ検証していきましょう。
前回のおさらい(パート4)は[こちら](https://qiita.com/Hiroki_Akita/items/e4c306ac6fdab78d24d5)から。
## 下準備
そろそろ言われなくてもやってますかね?(笑)“`python
!pip install qiskit
!pip install qiskit[visualization]
!pip install qiskit-mac
【最新のPyScript】HTMLにPython処理記述!ブラウザ表示をJavaScriptみたいに埋め込めるらしいので試してみた
先日PyConで取り扱っていたバックエンドで使うPythonをクライアントサイドで!使い勝手はJavaScriptとか書くかのように処理を書けるという**PyScript**です。
まだアルファ版ということで足りないところはあるようですが、話題となっているとのこと。:point_down: サンプル: HTMLにPythonで処理書いてる。※少し時間かかるようです。
https://pyscript.net/examples/todo.html
https://pyscript.net/examples/matplotlib.html
HTMLにPythonの処理を埋め込んで書けるということで
– pandasとかscikit-learn、グラフなんかを書ける
– Pythonは書けるけどJS自信ない…という人にも良いかもしれませんし、今後機能が充実したらもっと期待できそう。

“`python
# listを変数名にするとlist()が使えなくなる
li = [1, 2, 3, 4, 5]# 要素を追加
li.append(6)# 指定したindex番号に挿入
li.insert(0, ‘hoge’)## 指定した値と同じ要素を削除
li.remove(‘python’)
“`## 辞書型(オブジェクト)
“`rb
obj = {
“hoge”: “ホゲ”,
“sample”: “サンプル”
}# 追加 2通り
obj
SPIKEプライムの軌跡をPythonで描画する
# 目次
1.SPIKEプライムとは?
2.プログラミング
3.ロボットを動かす
ジャイロセンサーから情報取得
4.Pythonで描画
5.最後に
# SPIKEプライムとは?
[LEGO公式ページより](https://education.lego.com/ja-jp/products/-spike-/45678#spike%E3%83%97%E3%83%A9%E3%82%A4%E3%83%A0)
>レゴ**®エデュケーション SPIKE™** プライムは、小学校高学年から中高生向けのSTEAM学習セットです。カラフルなブロックパーツや、使いやすいハードウェアとScratchベースの直感的なプログラミングを融合し、問題解決型のプロジェクトを通して楽しみながら実社会で役立つスキルを育くむことを可能にします。また、SPIKEプライムは、人気の高いプログラミング言語Pythonを使ったテキストコーディングにも対応し、学習ニーズに応じてアプリ上で、ワードブロック(Scratch ベース)または、Python(テキストベース)を選択することが
[Python] 辞書型とかのネスト先のデータを取得する方法
pythonでネストしたJSONデータにアクセスしたいことが結構あります。
jqを使うのを迷いつつ、でもifで繋げるのが面倒なので、簡易的にデータを抜く関数を作ってみました。
対応はdict() or list()です。## 構造
“`
・ lib/
|– __init__.py
|– function_utils.py
test.py
“`“`python:test.py
from lib import FunctionUtilsdef test():
# ネストアイテム
item_group = {
“id”: 1,
“name”: “hoge”,
“option”: [
{
“sort”: “ASC”,
“field”: “price”
},
{
“sort”: “DESC”,
B – Iron Bar Cutting AtCoder
## 問題
https://atcoder.jp/contests/ddcc2020-qual/tasks/ddcc2020_qual_b## 回答
“`
n = int(input())
a = list(map(int, input().split()))
yen = 0
a_sum = sum(a) #累積和
ans = 99999999999999999 #累積和
for i in range(n):
yen += a[i] # 1回目はa[0]を足し、2回目はa[0]とa[1]をたす、、と足していく。累積和。
a_sum -= a[i] #1回目はa[0]をひく、2回目はa[0]とa[1]を足したものをひく、、と引いていく。累積和。
ans = min(ans, abs(yen – a_sum)) #絶対値との差print(ans)
“`## ポイント
累計和の問題。
【python3】リストをintに変えて出力したい場合【標準入力】
# 前置き
python3の標準入力問題を解いているとリストの要素をint型に変えて出力したいときが頻発することが多い。
そんな時にmap関数が使えるのだ!!!# 使用例
“`python
input_list=[“6″,”10″,”13”]
“`↑の要素[0]と[1]を出して整数として足し算させたい場合があるとする
期待する出力は
“`python
16
“`しかしそのまま抜き出しても↓
“`python
#print(input_list)すると[‘6′,’10’,’13’]と表示される
print(input_list[0]+input_list[1])#610
“``610`というように文字の結合になってしまう。
ではどうすればリストの要素をint型に変えて足し算することができるのか。
listにした上でmap関数の引数にintと対象のlistを入れると良いのだ
map関数を下記の様に使う!↓
“`python
input_list=[“6″,”10″,”13”]
int_list=list(map(int,input_list))#リス
About python class constant and scope
“`python
class Hoge:
PRIORITY = 1
def hoge(self,p=PRIORITY, priority=4): # not self.PRIORITY
print(self.PRIORITY,p,priority)print(Hoge.PRIORITY) # could not use PRIORITY
r = Hoge()
r.priority = 7
r.hoge()
r.hoge(3)
r.hoge(3,5)
r.hoge(2)
print(Hoge.PRIORITY,r.priority) # could not use PRIORITY
“`“`
1
1 1 4
1 3 4
1 3 5
1 2 4
1 7
“`
Amazon Linux2にPython 3.10をインストールした時のメモ
opensslは1.1.1にあげないとインストール後にpipで何かインストールしようとしたときに
SSLのエラーが出た。色々調べた結果、openssl-develを消して、openssl11とopenssl11-develを
入れるとよいというのを見つけて試したらうまくいった。“`sh
sudo yum remove -y openssl-devel
sudo yum install -y openssl11 openssl11-develwget -c https://www.python.org/ftp/python/3.10.4/Python-3.10.4.tar.xz
tar -Jxvf Python-3.10.4.tar.xz
cd Python-3.10.4
./configure –enable-optimizations
make
sudo make install
cd
python3.10 -m venv py310
source ~/py310/bin/activate
“`
【Linux】Python3.10.4 をソースからビルドする方法と、注意点いくつか【Python3.10】
# Python3.10.4 のソールビルド
Python3.10.4 をソースビルドしてみた!
意外とハマる部分が多かったのでメモしておきます。ちなみに環境はRockyLinux8です
## 準備
“`
# dnf -y install make wget libffi-devel zlib-devel readline-devel
“`↑まっさらな状態からだと他にもいるかも。
都度エラーコード見てインストールしてください。:::note info
ちなみに`readline-devel`が個人的に重要で、
これを先にインストールしてからコンパイルしないと、
対話モードで履歴入力するときにキーボードの矢印キーが使えなくなる。
※下のほうにエラーとして書いたので参考に。
:::## ソースDL
“`
# cd /usr/local/src# wget https://www.python.org/ftp/python/3.10.4/Python-3.10.4.tgz
# tar zxvf Python-3.10.4.tgz
“`## confi
指数バックオフ
google.api_core.retry を使って指数バックオフを行う方法
正直なところ、これで良いのかちょっとわからない。
# ロジックでやりたい場合
“`python
from google.api_core.exceptions import TooManyRequests
from google.api_core import retry_BACKOFF_DURATION = 200
@retry.Retry(predicate=retry.if_exception_type(AssertionError), deadline=_BACKOFF_DURATION)
def example_function():
[なんか処理]
if [指数バックオフでリトライしたい判定]:
print(‘失敗’)
raise AssertionError(‘失敗’)
“`# GoogleCloudStorageでやりたい場合
GoogleCloudStorageにアップロードする場合、頻繁にするとTooManyRequests
seleniumでリンク(aタグ)をクリックできないときの対処
## やりたいこと
seleniumを利用してのウェブスクレイピング。
リンクをクリックしてリンク先へ遷移したいだけなんです。## できなかったこと
ターゲットとする要素を、文字列指定で特定し、クリック。
しかし、何も起こらず、静かに時を刻むだけ・・・“`python:
from selenium import webdriverbrowser = webdriver.Chrome((r’C:\Users\[ユーザ名]\chromedriver.exe’)
browser.get([目的のURL])element_target = browser.find_element_by_link_text([ターゲットとする文字列])
element_target.click()
“`
念のため[find_elements_by_link_text]で検索し要素数を確認しても1つだったため、別のお門違いのリンクをクリックしているわけでもなさそう。「aタグからjavascriptを実行させる」ようになっている場合は、クリックが動作しない場合があるようですが、今回はそのよう
djangoを使ったAPI開発を理解する[part1 目的の整理と環境構築]
諸事情でDjango-rest-frameworkを使えるようになることになったため、その過程を残していきます。
タイトルに`目的の整理と環境構築`としていますが、先に環境構築の内容を書きます。
目的の整理は気になったらこの記事の後半部分の前提項を見てください。## 環境構築
### 作業する環境
今回の記事を書くにあたり使用した環境はこちら
“`
okapi@MBP01 ~ % sw_vers
ProductName: macOS
ProductVersion: 12.3.1
BuildVersion: 21E258okapi$ docker –version
Docker version 20.10.5, build 55c4c88okapi$ docker-compose –version
docker-compose version 1.28.5, build c4eb3a1f
“`
今回は`docker-compose`を利用して端末上のpythonは利用しない方針で進めます。
### 元にするdocker-compose.ymlの作成
まずはdocke