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

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

言語処理100本ノック解いてみた(4,5)毎朝やってますわ

## 問題4
“`python
import re
string = “Hi He Lied Because Boron Could Not Oxidize Fluorine. New Nations Might Also Sign Peace Security Clause. Arthur King Can.”
re.sub(‘[-=+,#/\?:^.@*\”※~ㆍ!』‘|\(\)\[\]`\’…》\”\“\’·]’,””,string)
strarr = string.split(” “)
arr = [1, 5, 6, 7, 8, 9, 15, 16, 19]
dict_res = {}
for i in arr:
dict_res[i] = strarr[i-1][0]
for i in range(len(strarr)):
if i+1 not in arr:
dict_res[i+1] = strarr[i][:2]
print(dict_res)
“”” 実行結果:{‘Al’: 15,
‘Ar’: 18,
‘B’: 1,
‘Be’: 11,

元記事を表示

初心者から始めるプログラミング LeetCode:Valid Parentheses

## はじめに
就活が始まり、コードテストなるものを受けるようになった。プログラミング自体は1~2年ほど前から学んでいたため、なんとかなるだろうとたかを括っていたら意外と難しい。しかも、今自分が使っている言語(TypeScript)はどうやらコードテストには向いていないらしい・・・
ちょうど、大学院の研究でPythonを使い始めたのでこれを機にPythonでアルゴリズムを学ぼうと決意。
その中で、自分が引っかかった点や学びになった点を備忘録を兼ねて記載していきます。

本日はLeetCodeからStackの理解におすすめと噂の20.Valid Parenthesesを解いていきます。

## 問題
{ , } , [ , ] , ( , )この6種類の文字が組み合わされて文字列sとして与えられます。
例えば、s='{]()’など
その時,Sが正しい括弧の並びになっているかを判定するというもの。
例えば、

`s='()’`はtrue
`s='{}()[]’` はtrue
`s='{)[)’`はfalse

空文字列もtrueになるのには要注意です。

## 解法
まず考えたことはペ

元記事を表示

Youtube Data APIを使ってカスタムURLを元にチャンネルIDを取得出来るか試してみた

[Youtube Data API](https://developers.google.com/youtube/v3/getting-started)で特定のチャンネルからアップロードされた動画の情報を取得する場合、対象チャンネルのIDが必要になります。
自分のチャンネルであれば、Youtubeにログインして設定画面からチャンネルIDを確認することが可能ですが、
他人のチャンネルの場合は、対象のチャンネルのURLの末尾を確認するのが一般的だと思います
※YoutubeのチャンネルURLについては、[こちら](https://support.google.com/youtube/answer/6180214?hl=ja&ref_topic=9257109)をご参照ください

https://support.google.com/youtube/answer/6180214?hl=ja&ref_topic=9257109

ただし、人によっては「カスタムURL」を設定することで独自のURLを使用している方もいることが分かりました
※カスタムURLの詳細は、[こちら](https://su

元記事を表示

Python で Amazon Rekognition を動かしてみた

# 背景
「家に不在時でも〇〇が家に来たら〇〇を行う」
こんな事ができたらなぁと考える事がありました。

例えば
 ・ヤクルトレディが来たらオートロック解除
 ・宅配業者ならオートロック解除
 ・N〇Kならブラックリスト登録
でもどうやって判断するんだ?画像分析ってなんか難しそうやなぁ

と言うことで今回は、やりたい事の一端に活用できそうな **Amazon Rekognition** を動かしてみます。
また、今後応用できるように **Python** で動作できる様にします。

# 流れ
①**Python** 実行
②**Amazon S3** にImageを格納
③**Amazon Rekognition** で要素を分析
こんな流れでいきます。

# 環境
Windows 10 Enterprise 上でWSL2を

元記事を表示

Meraki MV Sense MQTT を使ってみた

# 背景
Meraki MVのAPIの中に”MQTT”と記載があった。
何のことか分からなかったので調べると、面白そうなので動かしてみた。

# 環境
Windows 10 Enterprise 上でWSL2を動かしています。
Ubuntu、Pythonを利用しています。

### Version
“`
$cat /etc/os-release
NAME=”Ubuntu”
VERSION=”20.04 LTS (Focal Fossa)”

$python3 -V
Python 3.8.10

>wsl -l -v
NAME STATE VERSION
* Ubuntu Running 2
“`
# 構成
今回動作確認をした構成図はこちら。
毎度わかりずらいのはすいません☺

Pythonファイルを超簡単にexeファイル化するGUIソフト

**auto-py-to-exe**というpyinstallerをGUI化したソフトが便利です。書くのが煩わしいspecのadd-data等をマウス操作で簡単に追加できちゃいます。

操作のデモがこちら
![68747470733a2f2f6e6974726174696e652e6e65742f706f7374732f6175746f2d70792d746f2d6578652f6175746f2d70792d746f2d6578652d64656d6f2e676966.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/282788/b53d6160-5efb-c4b0-ecdf-b7343a441f0b.gif)

auto-py-to-exeのレポジトリはこちら

https://github.com/brentvollebregt/auto-py-to-exe

pyinstallerのspecの書き方はこちら

https://pyinstaller.org/en/stable/

元記事を表示

Raspberry Pi 4 で 温湿度気圧センサー(BME280)の測定結果を出力する

RaspberryPi4に温湿度気圧センサーのBME280を接続、測定結果を出力した。

## はじめに
サンプルコードはSWITCH SCIENCEのサンプルプログラム(bme280_sample.py)を使う。
※[GitHubはこちら](https://github.com/SWITCHSCIENCE/samplecodes/blob/master/BME280/Python27/bme280_sample.py)

**wgetで取得**
“`
$ wget https://raw.githubusercontent.com/SWITCHSCIENCE/BME280/master/Python27/bme280_sample.py
“`

## 準備

**配線**
Raspberry Pi 4との配線は配線図の通りに実施。
具体的には、以下の通り。

“`
SDI (BME280) -> GPIO2 P03 (Raspberry Pi SDA1)
SCK (BME280) -> GPIO3 P05 (Raspberry Pi SCL1)
GND,

元記事を表示

データフレームについて–08: 論理演算

# 論理演算 `all` と `any` と 排他論理和

“`python
import pandas as pd

df = pd.DataFrame({
‘x’: [1, 2, 3, 4, 5],
‘y’: [1, 0, 0, 0, 1],
‘z’: [0, 0, 0, 0, 1],
‘b’: [True, False, True, True, True]})
df
“`

データフレームについて–07: パイプ

# パイプ

関数型言語では,データ処理のときに関数を入れ子にすることで中間結果(変数)を明示しないというやり方が,ある意味普通である。

## 1. 入れ子式に関数を呼ぶ場合

“`python
import pandas as pd
df = pd.DataFrame({
‘a’: [1, 2, 3, 4, 5],
‘b’: [1.2, 3.4, 5.6, 7.8, 9.0]
})
df

def func1(df):
return df.transform(‘sqrt’)

def func2(df, power=2, constant=1):
return df.transform(lambda x: x**power + constant)
“`

“`python
print(func2(func1(df)))
“`

a b
0 2.0 2.2
1 3.0 4.4
2 4.0 6.6
3 5.0 8.8
4 6.0 10.0

## 2. パ

言語処理100本ノック解いてみた(0~3)

# お腹すいた
今日からずっと書きます。フィードバックよろしく。
言語処理100本ノック : https://nlp100.github.io/ko/ch01.html
ど偉い俺様のギット:https://dongkeuny50.github.io/
初作成:2022/06/21
## 問1
“`python
print(“stressed”[::-1])
“`
“`python
desserts
“`
説明するまでもない。
## 問2
“`python
“”.join([“schooled”[i* 2 + 1]for i in range(4)])
“`
“`python
cold
“`
同じく。競プロやってたらすぐです。これも一文でできなかったら今すぐ競プロやれ。

## 問3
“`python
“”.join([“shoe”[_] + “cold”[_] for _ in range(4) ])
“`
“`python
schooled
“`

## 問4
“`python
print([len(_)for _ in “Now I need a drin

condaを叩いたら「AttributeError: module ‘colorama’ has no attribute ‘init’」が出るようになり、なんとか解決できた話

# 0. 事の発端
それはPythonでのデータ分析を勉強中のことでした。
自然言語処理のお勉強で、形態素解析をするためにMeCabをjupyter noteboookで使いたい(ちなみにOSはWindows11)と思い、Anacondaにインストールする作業をしていました。
ところが、MeCabとMeCab-python3の両方をインストールしないといけないことが分かっておらず、コマンドプロンプトでMeCabのバージョンは出力できるのにいざpythonでimportするとエラーになったことで「あれれ~おかしいぞ~~??」とあれこれpathを変えてみたりAnacondaをupdateしてみたりしているうちに、コマンドプロンプトからもAnaconda Promptからも、condaコマンドを使おうとするととにかく「AttributeError: module ‘colorama’ has no attribute ‘init’」とエラーが出るようになってしまいました。

ちなみに超蛇足ですが、この他「コマンドプロンプトからjupyter notebookが開けなくなった」「コマンドプロン

データフレームについて–06: 統計量の計算

# 統計量の計算

“`python
import numpy as np
import pandas as pd

df = pd.DataFrame({
‘a’: [1, 2, 3, 4, 5],
‘b’: [1.2, 3.4, 5.6, 7.8, np.nan]
})
df
“`

<

ec2ssmが便利だと思う

## ec2ssmが便利だと思う
某所でやっつけでつくったec2のNameタグをタブ補完してssmログインするツールを引数にprofileを指定して汎用性をもたせました。
ssmの設定については、このあたりの記事を参照。

https://zenn.dev/t_morooka/articles/eb98e6a5c9a493

ec2ssmはこちら。
https://github.com/yuhiwa/ec2ssm

ssm自体の説明は他にまかせます。
ec2ssmは“`ec2ssm Nameタグ“`でec2にログインできるaws cli(aws ssm)のラッパーです。

### 使い方

#### 1. Nameタグをインスタンスに設定する
分かりやすい名前をインスタンスのNameタグに設定しましょう。

#### 2. ~/.aws/credentialsに記載する
“`
# ~/.aws/credentials

[default]
aws_access_key_id=…
aws_secret_access_key=…

[myprofile]
aws_acces

データフレームについて–05: データフレームの変容

# データフレームの変容

“`python
import pandas as pd
df = pd.DataFrame({
‘a’: [1, 2, 3, 4, 5],
‘b’: [1.2, 3.4, 5.6, 7.8, 9.0]
})
df
“`

ABC256E問題をトポロジカルソートっぽく解いた話

### E問題をトポロジカルソートっぽく解いた話
公式解説のYoutube放送中にコメントで「トポロジカルソートで解いた」と書いたら[snuke](https://atcoder.jp/users/snuke)さんに「どうやって解くんだろ」と言われたので「あれ?あまり一般的な解法ではないのかな」と思ってここで共有させていただきます。Qiitaに解法記事を載せるのは初めてなので、図や文章が読みづらかったらゴメンナサイ。
### 問題を見たときまず考えたこと
[ABC256E](https://atcoder.jp/contests/abc256/tasks/abc256_e)これ見た瞬間に、まず真っ先に頭に浮かんできたのは[ABC223D](https://atcoder.jp/contests/abc223/tasks/abc223_d)だったんですよね。こういう「AさんはBさんより先に」みたいな問題構造はA→Bの有向グラフだと捉えると上手くいくケースが多いです。

実際に今回の問題の入力例2を元にすると、こんな感じの有向グラフが出来上がります。
![スクリーンショット 2022-06

データフレームについて–04: 行,列の削除

# 行や列を削除する `.drop()`

“`
drop(labels=None, axis: ‘Axis’ = 0, index=None, columns=None,
level: ‘Level | None’ = None, inplace: ‘bool’ = False,
errors: ‘str’ = ‘raise’)
“`

pandas 0.21.1 以降では `labels` と `axis` で指定していたものが `index`, `columns` で指定できるようになった。

新しいバージョンをインストールして,`index`, `columns` を使おう。

“`python
import pandas as pd
df = pd.DataFrame({
‘a’: [1, 2, 3, 4, 5],
‘b’: [1.2, 3.4, 5.6, 7.8, 9.0],
‘c’: [‘A’, ‘B’, ‘C’, ‘D’, ‘E’]
})
df
“`

【Mac M1環境】MS outlookから数百通の個別メールを、連続自動送信するコードの書き方。(丸2日作業を瞬殺した話)

<やりたい事>
下記の様なメールリストが、あります。(実際にには数百の宛先に送付する必要があります。)
![list0615.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1665829/0dee25a9-d930-c1d5-618a-d0d495805a29.png)

上のメールリストに対して、下記の様なOutlookメールを個別に自動送信して、楽をしたい。
(尚、手動のBCCメールは、経験上、誰も読まないのを知っているので、楽ですが、ダメです。あくまでも個別メールにしたいと思っている。)

```
山田様、
これからは本文です。本日は、こんにちは!テストです。先日はありがとうございました。これはテストです。
```
これですが、メール数通位なら、兎も角、数百通を手動で発信したら、丸2日は掛かります。また、手動特有のメール誤送信がマジで怖いですね。
従って、手動メール送信は論外です。

<もし、Windows環境なら>
因みに、過去にも、Windows環境なら構築したことがあります。
「Pytho

a