- 1. 【覚書】pythonのstring.Template.substituteでは日本語キーを使えない
- 2. Python3 を子供に教えるためにオセロを作ってみた(3)
- 3. Pythonでソートをする。ついでにアルゴリズムを考えてみる。
- 4. 機械学習の学習サイト紹介
- 5. Twitter Streaming API用の完璧で汎用的なモジュールを作ってみる
- 6. ゼロから始めるLeetCode Day35「160. Intersection of Two Linked Lists」
- 7. 製薬企業研究者がPythonの内包表記についてまとめてみた
- 8. python-pptxでTableにadd_row/add_columnしたり、methodの補完を効くようにしたりする
- 9. 【DRF】PUTメソッドをPOSTメソッドの代わりに使う
- 10. [備忘録]ラズパイにて、 /dev/i2c-3(SDA.0, SCL.0)を使用する(温度と大気圧の取得も)
- 11. pythonでif文の条件を短くしたい
- 12. 【コピペでできる】PythonでWebスクレイピング
- 13. Python速度比較 regex vs startswith vs str[:word_length]
- 14. 【Node-RED】Node-REDからAnaconda仮想環境上のPythonを実行する【Anaconda】【Python】
- 15. Python って日本語わかるんだ!
- 16. Scrapyのスケジューラscrapy-doを使ってみた
- 17. 徹底理解:単回帰解析
- 18. attempted relative import beyond top-level packageと怒られたときに解決する方法
- 19. RDKit環境構築 for Mac @JupyterLab
- 20. pyenvでバージョン一覧表示されたバージョンをインストールする
【覚書】pythonのstring.Template.substituteでは日本語キーを使えない
# どういうこっちゃ
こういうこと。
Python 3.7.2で確認。“`.py
import string# ↓これだと ValueError: Invalid placeholder in string が発生する
# template = string.Template(‘eng_keyは${eng_key}です。日本語キーは${日本語キー}です’)template = string.Template(‘eng_keyは${eng_key}です。日本語キーは${ja_key}です’)
data = {
‘eng_key’: ‘eng_hogehoge’,
‘日本語キー’: ‘ja_ほげほげ’,
‘ja_key’: ‘ja_hogehoge’
}print(template.substitute(data))
# eng_keyはeng_hogehogeです。日本語キーはja_hogehogeです
“`dict内に日本語のキーを持っている場合は注意しましょう。
Python3 を子供に教えるためにオセロを作ってみた(3)
# プログラムは動かして動きを見ながら解説を見て学ぶべし
とにかくプログラムは動かしてナンボです。そこから色々いじってみることで理解が促進される効果もありますので、今日はオセロゲームのソースを少々長いですがまずは公開します。これを PyCharom の新しいプロジェクトとして作ってみることにしましょう。PyCharm を起動してファイルメニューから「新規プロジェクト」を作成します。プロジェクト名は**オセロ**とでも付けてください。
![スクリーンショット 2020-05-24 17.06.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265655/c67f0df8-5ee5-a678-7989-7b75b0840c3a.png)プロジェクトを作成したら、ファイルメニューから「新規…」を選択して Pythonファイルを選択して、othello_cui.py などと名前を付けて Enterキーを押すと左のプロジェクトペインの中に othello_cui.py が現れます。
![ス
Pythonでソートをする。ついでにアルゴリズムを考えてみる。
#メソッド、組み込み関数でのソート
まずは以下のリストについてソートすることを考えてみる。“`python
data = [5, 3, 2, 4, 1, 6]
“`Pythonでリスト型を昇順または降順にソートするにはsort()とsorted()の二種類が存在する。
– リスト型のメソッドであるsort():そのリスト自体をソート
– 組み込み関数sorted():ソートされたリストを新しく戻り値として返す
##リスト型のメソッドsort()
もとのリスト自体を書き換える。“`python
data.sort()
print(data)
# [1, 2, 3, 4, 5, 6]
“`デフォルトでは昇順のソートになっている。降順にソートするためには引数reverseをTrueにする。
“`python
data.sort(reverse = True)
print(data)
# [6, 5, 4, 3, 2, 1]
“`注意が必要なことはsort()では戻り値はNoneである。
“`python
x = data.sort()
print(x
機械学習の学習サイト紹介
#はじめに
*インフォマティクス初学者が参照した学習サイトの紹介です。初めまして。
メーカーで材料の研究開発に従事している技術者です。
最近はインフォマティクス系にも関わり、試行錯誤している最中です。感染症拡大により在宅勤務が多くなってから、
現場で実験ができなくなったため、インフォマティクスに関する学習をしていました。
備忘録として参照させていただいたサイトをまとめました。
*書籍や有料サイトなども活用していますが、今回は無料学習サイトに限定しました。#学習サイト一覧
##1. データサイエンスのためのPython入門講座
米国でデータサイエンティストとして御活躍されているかめさんのブログです。[[1]](https://datawokagaku.com/python_for_ds_summary/
)
[1] https://datawokagaku.com/python_for_ds_summary/初期の環境構築から基本的な動作方法まで詳細に記載されており、初学者の私でも何とか環境構築することができました。
今でも問題が発生した時には振り返
Twitter Streaming API用の完璧で汎用的なモジュールを作ってみる
こんにちは!すずともです!
今回は、TwitterのStreaming APIについて。#(1)Twitter Streaming APIとは
TweetDeckみたいに、ツイートをリアルタイムで取得できるAPIのことです。といっても、ユーザのTLをリアルタイムで取得できる「User Streams API」は2年ほど前に廃止されました。
現在利用できるStreaming APIは「Filter realtime Tweets」というものです。
これは、検索条件を指定して、その条件にマッチしているツイートをリアルタイムできるAPIです。これには、2種類のAPIが用意されています。
– statuses/filter API
– PowerTrack APIこの2つの違いは、無料版か有料版かの違いで様々な制限の違いがあります。
詳しくは、[OverView](https://developer.twitter.com/en/docs/tweets/filter-realtime/overview)のページを見てください。僕はそんなにお金持ちじゃないので、今回は無料
ゼロから始めるLeetCode Day35「160. Intersection of Two Linked Lists」
#概要
海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。その対策としてLeetCodeなるサイトで対策を行うようだ。
早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイト。
せっかくだし人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。
[Leetcode](https://leetcode.com/)
[ゼロから始めるLeetCode 目次](https://qiita.com/KueharX/items/6ee2502c3b620c795b70)
前回
[ゼロから始めるLeetCode Day34「118. Pascal’s Triangle」](https://qiita.com/KueharX/items/75e711c6b051685d490c)基本的にeasyのacceptanceが高い順から解いていこうかと思います
製薬企業研究者がPythonの内包表記についてまとめてみた
# はじめに
ここでは、Pythonの内包表記について、覚えておくと役に立つことをまとめてみます。
# リスト内包表記
“`python
nums = [1, 2, 3, 4, 5]nums_double = [x * 2 for x in nums] # リストnumsの要素をそれぞれ2倍する
print(nums_double) # [2, 4, 6, 8, 10]nums_even = [x for x in nums if x % 2 == 0]
print(nums_even) # [2, 4]
“`“`python
nums_2 = [[1, 2], [3, 4]]nums_2_odd = [odd for nums in nums_2 for odd in nums]
print(nums_2_odd) # [1, 2, 3, 4]
“`“`python
nums_set = {1, 2, 3, 4, 5}nums_set_square = {x**2 for x in nums_set}
print(nums_set_squa
python-pptxでTableにadd_row/add_columnしたり、methodの補完を効くようにしたりする
はじめに
=======Pythonから pptxファイルをいじるには `python-pptx` がかなり便利です。
しかし、 現在リリースされている `v0.6.18` では「PyCharmなどのIDEでmethodの補完が効かない」「Tableに行や列を追加できない」です。methodの補完が効かないというのは、大したことないような気もしますが、なんか使ってて楽しくないので辛いです。Tableへの行や列の追加はやっぱりやりたいときがあります。どうも [python-pptx の本家](https://github.com/scanny/python-pptx) では1年以上更新が止まっているので、当分改善されそうにありません。今回その辺をちょっと改良?したので、共有しておきます。
Version
——–– Python 3.5以上 (Type Hintを使っているので)
– PyCharm (2020.1.1)本題
======methodの補完が効かない原因は、 methodやpropertyの戻り値の型がはっきりしないことが原因なので、なんとか
【DRF】PUTメソッドをPOSTメソッドの代わりに使う
# Django REST Frameworkで`PUT`メソッドでレコード(インスタンス)を作成したい場合
Django REST Framework(DRF)に限らず、REST APIでは通常、HTTPプロトコルの`POST`メソッドでインスタンス(=レコード)を作成して`PUT`メソッドで更新をするが、`PUT`で作成することはできないか調べてみたところ方法があったので備忘録として残しておく。
## 起きた問題とやりたいこと
レコードの更新(一度作成したレコードのデータをユーザーが編集した場合など)に`PUT`を使っていたが、DBに存在しないレコードを`PUT`で送ろうとしたところ、`404`エラーが返ってきた。通常は`POST`でレコードで作成するようにしているが、`PUT`でもレコードの作成ができるようにしたい。もう一度、説明すると想定している挙動は次の通り。
[ こうなってほしい ]
– 通常は`POST`でレコードを新規作成して、`PUT`か`PATCH`(部分更新)でレコードの更新
– `PUT`で更新しようとしたレコードがDBに存在しない場合、**404エ
[備忘録]ラズパイにて、 /dev/i2c-3(SDA.0, SCL.0)を使用する(温度と大気圧の取得も)
# はじめに
ラズベリーパイにて、I2Cデバイスを使用する場合、
通常はSDA.1, SCL.1(BCM2, BCM3)を利用します。
今回は、SDA.0, SCL.0(BCM0, BCM1)を利用する方法を紹介します。![IMG_8169 (1).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/559938/e4a9933c-a238-f237-101c-a9949fc4cb7e.jpeg)
# 紹介する内容
– /dev/i2c-3の設定方法
– BMP180による動作確認![undefined]()# 作業環境
– ラズベリーパイ3P
– Linux raspberrypi 4.14.79-v7+ #1159 SMP Sun Nov 4 17:50:20 GMT 2018 armv7l GNU/Linux
– Python 3.6.6 (default, Jan 24 2019, 20:40:14)# 接続図
– 大気圧センサーBMP180を使用して説明を
pythonでif文の条件を短くしたい
プログラムを書いていると分岐させたい条件が細かくなって、愚直に書くとどうしても長くなってしまうことがあると思います。
例えば入力した文字がaかどうかを確認する、というのであれば、、
“`python
input_str = input()
if input_str != “a”:
print(“入力された文字はaではありません。”)
“`とこれだけで済みますが、aでもbでもcでもない、というのを判定する場合、
“`python
if input_str != “a” and input_str != “b” and input_str != “c”:
“`
と、こんな感じに愚直にコードを書くと!=の条件式をandでつなげただけ長くなってしまいますね。
なので、今回はリストを使って以下のようにまとめました。“`python
word = [“a”, “b”, “c”]
if input_str not in word:
“`これで判定したい文字が増えてもリストに追加するだけでif文をいじる必要がなくなりました。
横に長くなるよりは見栄えはいい
【コピペでできる】PythonでWebスクレイピング
#はじめに
この記事はプログラミングを始めて1ヶ月ほどの初心者でもできた内容となっているので上級者の方には少しつまらなく感じてしまうかもしれませんがご了承ください。
※プラス初投稿なのでお手柔らかに#Webスクレイピングとは
Webスクレイピングとは、WebサイトのHTMLから必要な情報を抽出するコンピューターソフトウェア技術です。
データを抽出するにあたって、Webスクレイピングが規約に反してしまうサイトもあるのでちゅういしてください。
ex ) TwitterはAPIの利用が必須なので無断で使用すると法的に罰せられる可能性があります。
#使用したもの
- Python
- Requests
- Beautiful Soup
- Jupyter Notebook
言語はPythonを使用しました。
ただ、今回の内容は特にPythonを覚えたりはしなくてもコ
Python速度比較 regex vs startswith vs str[:word_length]
# Python速度比較 regex vs startswith vs str[:num]
## はじめに
Ptyhonである文字列の前方一致を判定する方法はいくつかある。
その中で代表的な以下の3つの速度比較を行う。– 正規表現
– startswith
– str[:word_length] == word## 測定方法
### 環境
以下の実行環境で実施する| 項目 | 値 |
| — | — |
| Python Version | 3.8.2 |
| OS | Ubuntu 20.04 |### プログラム
以下のプログラムを基準にして動作を確認する。なお各変数と各関数の役割は以下の通りである。
計測したい特性に応じて変数を変化させる。| 変数/関数 | 説明 |
| — | — |
| time_logging | 時間を計測するためのデコレータ |
| compare_regex | 引数の文字列のリストのそれぞれを正規表現で比較する |
| compare_startswith | 引数の文字列のリストのそれぞれを`startswi
【Node-RED】Node-REDからAnaconda仮想環境上のPythonを実行する【Anaconda】【Python】
# やりたいこと
– Node-REDからPythonを実行する。# 特徴
– (Python実行環境を容易にするため)Anacondaを使用する
– (初学者のハードルを低くするため)可能な限り入手可能なNode-REDノードを活用する# やりたいことイメージ
1. Node-REDからpostgreSQLに接続してcsvファイルを作成する
2. Node-REDからbatファイルを実行する
3. batファイルにてconda環境を有効にしてPythonプログラムを実行する
4. PythonプログラムへのI/Fファイルを指定する### 実行環境
– OS:windows 10
– postgreSQL:9.6
– ANACONDA NAVIGATOR:1.9.12
– Python
Python って日本語わかるんだ!
# 算譜
“`
import numpy as 算術
円周率 = 算術.pi
範囲, 尺, 字にする, 印刷せよ, 整数, つぶせ = \
range, len, str, print, int, hash
真, 偽, 全て真なれば真, いずれか真ならば真, 最大値, 最小値 = \
True, False, all, any, max, min
真偽 = {真:”真”, 偽:”偽”, “地動説”:”真”, “天動説”:”偽”}
掛け算 = lambda 甲, 乙 : 甲 * 乙単数字 = [“零壱弐参四五六七八九”[回] for 回 in 範囲(10)]
# 函数定義
def 漢(仮引数):
答 = ”
for 字 in 字にする(仮引数):
try:
答 += 単数字[整数(字)]
except ValueError:
答 += 字
return 答def 自乗(数):
return 掛け算(数, 数)# 組定義
class 図形:
# 方法定義
def __init__(self, 色 =
Scrapyのスケジューラscrapy-doを使ってみた
Scrapyを時刻起動させられるデーモン、[scrapy-do](https://scrapy-do.readthedocs.io/en/latest/index.html#)を試してみたので、記録しておきます。
ネット上に情報が少ないこともあり、少しでも貢献できれば幸いです。## 環境情報
Python 3.7.7
Scrapy 2.1.0
scrapy-do 0.4.0macOS Catalina 10.15.4
## scrapy-doについて
scrapy-doはLukasz Janyst氏が開発するScrapyの実行用デーモンです。
Scrapyのジョブを管理するコマンドライン、REST API、WebGUIが備わっています。
(公式ドキュメントは[こちら](https://scrapy-do.readthedocs.io/en/latest/))Scrapyの実行デーモンとしては、[scrapyd](https://github.com/scrapy/scrapyd)が有名ですが、scrapy-doはscrapydにインスパイアされて開発したとのことです。
徹底理解:単回帰解析
# はじめに
Pythonには、scikit-learnなど便利なライブラリが用意されており、比較的簡単に解析プログラムを組むことができます。ライブラリの中身はブラックボックスになりがちです。
本稿では、単回帰解析に焦点を当て、そのブラックボックスの中を覗いてみたいと思います。
使用するライブラリは、おもにnumpyとTensorFlowとなります。
本稿を書くに当たり、下記書籍を参考にしました。* [TensorFlow機械学習クックブック Pythonベースの活用レシピ60+](https://book.impress.co.jp/books/1116101172)
* [統計的機械学習の数理100問 with Python](https://www.kyoritsu-pub.co.jp/bookdetail/9784320125070)TensorFlow機械学習クックブック Pythonベースの活用レシピ60+は好著なのですが、TensorFlow1系でプログラムが書かれています。せっかくなので、ここではTensorFlow2系でプログラミングしてみたいと思います。
attempted relative import beyond top-level packageと怒られたときに解決する方法
## はじめに
Pythonの相対importで今までよく考えずUnitTestで使っていたり,ディレクトリを掘ってわけることを怖がっていたのですが,そろそろ本腰を入れて解決しようと思いいたり,調べたのち解決できたので記録として残しておきます.## attempted relative import beyond top-level packageを再現しよう
以下のようなディレクトリ構成で“`
/package/
__init__.py
subpackage1/
__init__.py
moduleX.py
moduleY.py
subpackage2/
__init__.py
moduleZ.py
moduleA.py
“`“`moduleZ.py“` が “`moduleX.py“` をimportしているとき,つまり “`moduleZ.py“` ファイル内で
“`python
from ..subpackage1 import mo
RDKit環境構築 for Mac @JupyterLab
#はじめに
*インフォマティクス初学者がRDKit環境を構築するまでの流れの記録です。初めまして。
メーカーで材料の研究開発に従事している技術者です。
最近はインフォマティクス系にも関わり、試行錯誤している最中です。先週ケモインフォマティクス勉強会に参加し、興味が沸いたのでRDKit環境の構築を行いました。
RDKitについては下記参考にさせていただきました。[[1]](https://github.com/Mishima-syk/py4chemoinformatics
)
(詳細記載されておりますので、RDKitの説明については割愛いたします。)
[1] https://github.com/Mishima-syk/py4chemoinformaticsしかしながら、初学者である私は環境構築に非常に苦戦しました。。。
そこで備忘録として記載します。
(初学者のため、誤りがあれば御指摘いただけると幸いです。)#実施環境
・MacBook Pro (Retina, 13-inch, Early 2015)
・macOS Catalina 10.15.
pyenvでバージョン一覧表示されたバージョンをインストールする
## 実現したいこと
pyenv で pyenv install -lした際に表示されたバージョンを全てインストールする
ただし、*-devやa5などは、除外する## 実行コマンド
“`
pyenv install -l | grep -E “\s3.[0-9.]+$” | sort -nr | xargs -I{} pyenv install {}
“`## 補足
すべてのバージョンではなく、要件に応じて一つ一つ必要なバージョンのpythonをインストールするのが良いと思います。