Python関連のことを調べてみた2020年08月06日

Python関連のことを調べてみた2020年08月06日

macOS Catalinaでコマンドラインツールで導入したPython3を使う

## はじめに

macOS Catalinaにコマンドラインツールをインストールすると、Python 2.7とPython 3.7を簡単に利用できます。

コマンドラインツールのインストールは `xcode-select –install` で可能です。以下を参考にしてください。

* https://qiita.com/capybara1229/items/cf1a26b0ff7b6100a865

これまでだと、Python3をmacOSで使うには公式のパッケージを使ってインストールしたり、HomebrewでPython3をインストールして使う人も多かったと思います。

## 問題が発生

最近HomebrewでインストールしたPython 3でPython パッケージマネージャー(pip3)でインストールしたはずのコマンドが実行できなくてはてなマークが浮かんだのですが、原因がわかりました。

おそらく、Python 3.8が必要なFormulaをHomebrewでインストールしたときに一緒にPython 3.8がインストールされたのですが、Python3.8のパスを通さなかっ

元記事を表示

MacOS CatalinaでPython3をインストールする(Homebrewのみで)

# はじめに

[この記事](https://qiita.com/linus_sh/items/f46d3abc7a854706f72e)でpyenvを利用してPython3をインストールする方法をまとめましたが、
pyenvを利用しないでHomebrewのみでインストールする方法もあったので勉強を兼ねてやってみました。

# 実行環境

– MacBookPro Mid 2014
– macOS Catalina ver.10.15.16

# 使用するパッケージ

– [Homebrew](https://brew.sh)

– 言わずと知れたMacとLinux向けのパッケージ管理ツール。今回はこれだけで完結します。

※ 詳しい説明は公式ドキュメントを参照して下さい。

# インストールの流れ

1. [Homebrewをインストール](#1homebrewをインストール)
2. [Pythonをインストール](#2pythonをインストール)

## 1.Homebrewをインストール

公式ドキュメントに従ってターミナルで以下のコマンドを実行します。インストール済

元記事を表示

Python 3.9のdictのマージ(`|`)が便利っぽい

# 概要

Python3.9からdictがマージできるようになったようす。
`|` でできるようす。

# 使ったPython

“`
Python 3.9.0b5 (default, Aug 6 2020, 10:04:28)
[Clang 12.0.0 (clang-1200.0.26.2)] on darwin
Type “help”, “copyright”, “credits” or “license” for more information.
“`

# 試してみます

## 基本的な使い方

“`python
>>> a = {‘a1’: 1}
>>> b = {‘b1’: 1}
>>> a | b
{‘a1’: 1, ‘b1’: 1}
“`

## マージと代入

“`python
>>> a = {‘a1’: 1}
>>> b = {‘b1’: 1}
>>> a |= b
>>> a
{‘a1’: 1, ‘b1’: 1}
“`

## 同じキーがあったとき

“`python
>>> a1 = {‘a’: 1, ‘b’: 1}
>>> a2 = {

元記事を表示

Zoomのミーティング入退出のwebhookをLambdaで受け取るAPIの下調べをした (1)

会社のハッカソンでZoomのAPIを使ったサービスを作ろうとしているので、その下調べを行った。

# Zoom API 認証

使えそうなものとして、JWT トークンか OAuth 2.0 が用意されている。
すぐに使えるJWTトークンは画面に表示されるものを使った。

会社のco.jp ドメインで登録されているzoomユーザーは、会社アカウント配下にあり、その場でJWTトークンを取得することができなかった(appの作成権限がなかった)ため、別途個人のGmailでユーザーを作って appを作成し、JWTトークンを入手している。

# Webhook のURLを用意する

お手軽に API Gateway + Lambda のAPIを作る事ができるフレームワークである **Chalice** を選択した。手間のかかる権限周りの設定もAPI Gatewayの設定もほとんど意識することなく、関数を書いて deployコマンド一発で諸々をデプロイしてくれるのでとてもお手軽です。

Chalice
https://github.com/aws/chalice

デプロイされたら、REST AP

元記事を表示

Pythonのリストのビルトインメソッドなどのまとめ

# まえおき

– この記事は執筆中の[やさしくはじめるPythonプログラミング](https://github.com/simon-ritchie/python-novice-book-preview)の本の特定の章の部分抜粋です。
– 入門本なので初心者の方向けです。
– ビルトインのリストの操作やメソッド関係の章の内容が主になります。
– Qiita記事にマッチしていない箇所(「章」や「ページ」といった単語が使っていたり、改行数が余分だったり、リンクが対応していない等)があるという点はご留意ください。気になる方は↑のリンクの電子書籍版をご利用ください(Githubでダウンロードできます)。
– コメントなどでフィードバックいただいた場合、書籍側にも活用・反映させていただく場合があります。

# リストや辞書に含まれているかを調べる : in

`任意の値 in 対象のリスト`というフォーマットでコードを書くと、その値がリスト内に含まれているかどうかの真偽値を取得することができます。

例えば以下のようなコードでは200という値がリスト内に含まれるかどうかの真偽値を取得しています

元記事を表示

django-rest-frameworkでのリクエストメソッドの制御

## はじめに
django-rest-frameworkをつかってAPI構築する際のリクエストメソッド制御方法に関してのメモ

## 環境
Mac 10.15.5
Python 3.8.1
Django 3.0.7
djangorestframework 3.11.0

## コード
こちらの記事のコードを参考にさせて頂きました
※ GET, POST, PUT, DELETE に絞って書きます。
https://qiita.com/kimihiro_n/items/86e0a9e619720e57ecd8

## 継承するクラスにより制御
リクエストメソッドの許可をコントロールしているのは views.py で定義するクラスで継承する基底クラス。
以下のコードの viewsets.ModelViewSetの部分。
インポートしたrest_frameworkで用意されているものです。

“`py:blog/views.py
import django_filters
from rest_framework import viewsets
from rest_framework i

元記事を表示

アルゴリズム 体操22 Squaring a Sorted Array

# Squaring a Sorted Array

ソートされた配列を引数として、昇順で配列のすべての数の平方を含む新しい配列を返します。

Input: [-2, -1, 0, 2, 3]
Output: [0, 1, 4, 4, 9]

Input: [-3, -1, 0, 1, 2]
Output: [0 1 1 4 9]

##Solution
引数として渡される配列はソートされているので、両端の数値は最大、最小の数が得られるため、配列の両端から始まる2つのポインターを使用することができます。 その後に、二乗した値を比較して大きい値を右端から追加していきます。

Screen Shot 2020-08-06 at 9.01.31.png

## 実装
“`python
def make_squar

元記事を表示

JIRAのOpenプロジェクトをGoogle spreadsheetに自動転記する

# 社外 vs 社内のプロジェクト管理環境差をどうするか問題
クライアント側ではJIRAを使って管理をしているのですが、社内ではBacklogを使っています。これには幾つかの理由が絡み合っています。

– 案件に紐づけて売上金額やクライアントには見せたくないコメント(あいつクソ)等も一緒に管理したい
– プロジェクトにかかわるすべての人のJIRAアカウントは発行してくれない
– グローバルクライアントで全部英語(社内全員がスムーズに英語でJIRAでガツガツやれるわけではない)
– JIRAも本社のリージョンにあるせいなのかクソ重くて使い物にならない

なのでやっぱり表のようなものにJIRAの内容をまんま転記するのが漏れやミスもなくてよいのかと思い試してみました。

# やったこと
– JIRAのRest APIでOpenプロジェクトの取得
– 整形
– Google Spreadsheetに転記

いちおう重たい重たいJIRAで検索してコピペする、みたいな不毛な作業はなくなりました。
細かい運用改善はこれからです。

# 実装

“`python:jira.py
import ba

元記事を表示

【pySerial】micro:bitにシリアル通信時「could not open port ‘/dev/cu.」エラーが出た時に考えられること

pySerialを使ってmicro:bitにシリアル通信した際に以下のようなエラーが出た時の対処法備忘録です。

>Traceback (most recent call last):
File “/usr/local/lib/python3.8/site-packages/serial/serialposix.py”, line 265, in open
self.fd = os.open(self.portstr, os.O_RDWR | os.O_NOCTTY | os.O_NONBLOCK)
FileNotFoundError: [Errno 2] No such file or directory: ‘/dev/cu.usbmodem14302’
>
During handling of the above exception, another exception occurred:

>Traceback (most recent call last):
File “testSerial.py”, line 4, in
ser =

元記事を表示

初心者のためのseaborn基礎③散布図(jointplot)※ヒストグラム付き

#seabornとは
Pythonのグラフ描画のためのライブラリです。。最も有名なライブラであるmatplotlibのラッパー関数(内包プログラム)という位置づけ。簡単に見た目綺麗なグラフの描画が出来る他、一括での処理などの機能もある程度充実しています。細かく指定して描画するならmatplotlib、簡単に綺麗にならseabornのです。

#散布図(jointplot)
今回のテーマは散布図です。散布図作成には`jointplot`を使用します。
seabornの散布図では、散布図と同時にヒストグラムが表示されます。これがデータの把握にも便利ですし、それっぽく見えてなかなか良いです。

#準備
まずは、pipで`seaborn`のライブラリをインストールして下さい。pip?って方は[こちら](‘https://qiita.com/Yanagawa_Yoshihisa/items/35e6f70a8411277282ce’)。

ライブラリをインポートします。`seaborn`に`sns`という名前をつけて`import`します。

“`python:
import seaborn

元記事を表示

【Python】英文PDF(に限らないけど)をDeepLやGoogle翻訳で自動で翻訳させてテキストファイルにしてしまおう。

#はじめに
英語論文、読むのしんどいですよね。翻訳してもらいましょう、見通しがグッと良くなりますよ。

※文中ではPDF用のように書いていますが要はクリップボードに翻訳したい文をコピーできれば使えます。

#方法
PDFを翻訳する際に問題となるのがPDFファイルの扱いにくさです。
ライブラリに頼って自動で文字を抽出せようにも上手く行かなかったり、文の順番がめちゃくちゃになったりします。
そこで今回はクリップボード経由で翻訳したいと思います。

流れは

PDFファイルをChromeなどで開いて「Ctrl+A」全選択してコピー
    ↓
プログラムを実行
    ↓
文字数制限(5000文字)を超えない長さかつピリオドで区切るように文章を分解
    ↓
翻訳サイトに投げる
    ↓
結果を所得
    ↓
出力

といった感じです。

#コード

実行にはSeleniumとpyperclipが必要です。インストールしてください。

“`
pip install selenium
pip install pyperc

元記事を表示

PythonでC言語風な構造体

## はじめに

PythonでC言語風な構造体を使いたくて悶々したときに使える手法。
例えば↓のよう構造体を作りたい場合。

“`C:c_struct.h
typedef struct{
float pos[4];
unsigned char class;
float score;
} HOGE;

HOGE fuga[10];

“`

## Pythonでの表現方法

Structured Datatypesを使用する

* https://numpy.org/doc/stable/user/basics.rec.html#structured-datatypes
* https://jakevdp.github.io/PythonDataScienceHandbook/02.09-structured-data-numpy.html

“`Python:c_like_struct.py
import numpy as np

HOGE = np.dtype([(“pos”, np.float32, (4,)),

元記事を表示

pythonの基礎: リスト

# リスト型
1つの変数に複数のデータが入っている状態です。

## リストの基本

文字列,数値混在でも可

“`python
a = 1
b = ‘みかん’
c = 2

li = [a, b, c]

print(li)
# 出力 [1,みかん,2]
“`

## 多重リスト
リストの中にリスト

“`python

a = “いち”
b = 2
c = “さん”
d = 4

li = [[a, b], [c, d]]

print(li)
# 出力: [[“いち”, 2], [“さん”, 4]]
“`

## 値取出
リストにはインデックス(番号)が割り振られています。
それを指定して取り出せます

“`
①左端から0として始まり、数値を指定することで取り出せます
②1番最後を-1として
-2,-3と順番に取り出せることもできます。
“`

“`python
List = [0, 1, 2, 3]
print(List [0])
# インデックスが0の「0」が出力される

List = [0, 1, 2, 3]
print(List [-3])
# 後

元記事を表示

APIで取得したJSONデータの日本語文字化けを解消する。

##発生した問題
youtube Data APIでデータを取得する練習をしていたら、取得したデータを出力すると日本語が文字化けしてた。

“`search.py
if __name__ == “__main__”:
try:
response = youtube_search(
q=’公式’, part=’snippet’, type=’video’, max_count=1, order=’date’)

CURRENT_DIR = os.getcwd()
with codecs.open(CURRENT_DIR + ‘/’ + ‘data.json’, ‘w’, encoding=’utf-8′) as f:
f.write(json.dumps(response, indent=2))

print(json.dumps(response, indent=2))

except HttpError as e:
print(“An HT

元記事を表示

[備忘録]CADqueryサンプルコード

# はじめに

本記事は、PythonモジュールであるCadQueryのサンプルコード集です。

導入方法は、[CadQueryを使って、3Dプリンタデータ(STLファイル)を作成する](https://qiita.com/kotaproj/items/781aa28fd4c20f504890)を参照ください。

※適宜更新予定です。

# [box]直方体をかく

– x:2mm, y:2mm, z:0.5mmの直方体を作成

“`python:test.py
import cadquery as cq

result = cq.Workplane(“front”).box(2.0, 2.0, 0.5)
show_object(result)
“`

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/559938/8094d8af-773e-5b1f-f1f9-aa42a282a6a9.png)

# [translate]直方体を座標指定で移動する

– x:2mm, y:2mm

元記事を表示

Erosion Thickness on Medial Axes of 3D Shapesを実装してみた

この記事ではSIGGRAPH2016で発表されたErosion Thickness on Medial Axes of 3D Shapes[^1] を解説し、実際に実装しています。

# はじめに

CGの世界には、Medial Axisというものがあります。Medial Axisは、とても大雑把に言うと「その図形の骨格」です(Topological Skeletonとも言われます)。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/541497/e4c839d4-6348-d83b-7cf6-509dd3ea7b1c.png)[^2]

2Dであれば、上図の赤い線がそれにあたります。青い円を見ると、鳥の首と右翼の付け根あたりで外周と接していることがわかります。このように外周と2点以上で接している円を「接触円」と呼び、Medial Axisはこの接触円の中心の軌跡になっています。

![image.png](https://qiita-image-store.s3.ap-northeas

元記事を表示

PythonとGDALを使ってウェッブマップを作ろう

オープンソースのPythonとGDALを使って無償でGISデータを処理する方法を紹介します。今回使用するデータは国土地理院が提供している基盤地図情報の数値標高モデル。

[![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677829/523a02a2-b6b5-6a22-c7b2-76773c887a27.png)](https://danielhoshizaki.github.io/hillshade/)

PythonとGDALの組み合わせで上記のウェッブマップが作成されます。

#### インストール
まずはMinicondaを使ってPythonと必要なライブラリをインストールしましょう。ダウンロードが完了したと後はMinicondaのコマンドラインを開きPythonの仮想環

元記事を表示

競プロで使えそうな基礎的アルゴリズム

#何の記事?

競プロで使えそうなアルゴリズムを羅列してみました。

###※随時更新します
#素数判定(エラトステネスのふるい)

https://atcoder.jp/contests/abc084/tasks/abc084_d

“`python

from itertools import accumulate
import math
m = 10**5

L = [x for x in range(2,m+1)]

#エラトステネスのふるいで素数を抽出
for y in range(2, int(math.sqrt(m)+1)):
L = [z for z in L if(z == y or z % y != 0)]

#N+1/2も素数であるものを抽出
P = []
for w in L:
if (w+1)/2 in L:
P.append(w)

#累積和のために作成
G = [0] * (m+1)
for i in P:
G[i+1] = 1

#累積和
Q = list(accumulate(G))

n = int(in

元記事を表示

heroku(無料プラン)で独自ドメインサイトにする方法

herokuの無料プランは、**無料**でサイトを公開できる素晴らしいサービスです。
でも、[appname]herokuapp.comはダサいし、**独自ドメイン**が欲しい。。

そんな人のために、今回僕が行った方法をメモ代わりに残しておきます。

##開発環境
・MacbookAir
・python(3.6.5)
・wagtail(2.9.2)
##今回お世話になったサービス
・heroku
・cloudflare
・Freenom

## 前提条件
・herokuにサービスをアップしている。
・独自ドメインを所有している(今回はFreenomを使用しました)。

## 参考サイトとの相違点
**[車輪の再発明](https://ja.wikipedia.org/wiki/%E8%BB%8A%E8%BC%AA%E3%81%AE%E5%86%8D%E7%99%BA%E6%98%8E#:~:text=%E8%BB%8A%E8%BC%AA%E3%81%AE%E5%86%8D%E7%99%BA%E6%98%8E%EF%BC%88%E3%81%97%E3%82%83,%E6%8C%87%E

元記事を表示

PythonとSeleniumでDeepLに英文流して自動翻訳させる

# やりたいこと

とりあえず、Science Directから書誌情報+アブストをゲットした。次は、これはDeepLに流し込んで翻訳させていく、っていう処理をしたい。有料プランに契約すれば、ファイルを一気に翻訳させることが可能になるけど、まあ、ものは試しということでselenimuとchromedriverでやってみようということでチャレンジ。

# 準備

##とりあえずCSVファイルをpythonに読み込む。

“`python
import pandas as pd

df = pd.read_csv(“DB.csv”,header=None, delimiter=”,”, quoting=1)
print(df.at[0,1]) # タイトル
print(df.at[0,9]) # アブスト
print(df.at[0,10]) #  キーワード

for title in df[1]:
print(title)
“`

まあ、これはすんなり。

## SeleniumとChromDriverでDeepLにアクセス

“`python
from se

元記事を表示

OTHERカテゴリの最新記事