- 1. AWS IOT にパブリッシュをするサンプル
- 2. Qiitaの記事をバックアップする(Python)
- 3. Python3について(return[戻り値]について)
- 4. [Github Actions] Python + Poetry
- 5. ①初めての投稿
- 6. 急にpip installで一部のライブラリのインストールが失敗するようになった件
- 7. PandasのデータフレームをRに読み込ませる
- 8. Python3 FlaskでMOCK的なAPIサーバを作る(5分で記載)
- 9. AtCoder参加記録No.5ーABC217
- 10. 繰り返し画像の生成 ~Pillow vs OpenCV(というかnumpy)~
- 11. 【Python】CSVに行を足してよいかどうか(新しい値があるかどうか)判断する関数
- 12. Python3でCSVからJSONへ変換する
- 13. 【Python】CSVの最終行が指定データと一致するかどうか判断する関数
- 14. python お一人様一点限り機能
- 15. python3 配列に任意の数入れる(簡易版)
- 16. python3 文字列の重複を調べる方法
- 17. python3 指定範囲だけ大文字にする (+改行なしの出力)
- 18. python3 任意の文字を抽出する(記録)
- 19. python3 配列を数値に変換して計算する (記録)
- 20. python3 配列条件付き 抽出方法(簡易版)
AWS IOT にパブリッシュをするサンプル
次のページを参考にしました。
[AWS IoT Core -> デベロッパーガイド -> HTTPS](https://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/http.html)エンドポイントは次のコマンドで調べます。
“`bash
aws iot describe-endpoint –endpoint-type iot:Data-ATS
“`トピックは sdk/test/Python 限定です。
デモを実行した時にこのトピックが作成されたのだと推測します。“`bash:rest_publish.sh
#
# rest_publish.sh
#
# Sep/09/2021
#
HOST=”https://abcd6goq68zt4o-ats.iot.ap-northeast-1.amazonaws.com:8443″
TOPIC=”sdk/test/Python”
URL=$HOST”/topics/”$TOPIC”?qos=1″
#
curl –tlsv1.2 \
–cacert .
Qiitaの記事をバックアップする(Python)
QiitaではAPIが公開されているので、これを利用して記事をバックアップします。
https://qiita.com/api/v2/docs
## 1. QiitaのAPIを利用する
### Qiitaのアクセストークンを取得する
Qiitaにログインした状態で、[[設定] – [アプリケーション]](https://qiita.com/settings/applications)にアクセスします。
個人用アクセストークンの「新しくトークンを発行する」をクリックします。![qiita_api_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125621/a2f29e72-d648-5a30-cb04-afaa83b387e3.png)
アクセストークンの説明を入力し、read_qiitaにチェックを入れ、「発行する」ボタンをクリックします。
![qiita_api_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaw
Python3について(return[戻り値]について)
#returnについて
関数の最後にいつも書いてありましたが、あまり意味は分かっていませんでした。
なんとなく理解したので、覚書的に書いておきます。##1.returnがない場合
“`.py
def aisatsu():
print(‘Hello’)x = aisatsu() #xに対して、あなたは今後aisatsu()ですよと指示している
>> Helloprint(x) #xがaisatsu()になっていれば、Helloが出力されるはず
>> None“`
このようにxにaisatsuを割り当てて、xを呼び出してもHelloはプリントされません。
なぜなら、このaisatsuの関数が直接呼ばれた時でないと関数の中身が動かないからです。
なので、xに関数を割り当ててもdef aisatsu():までしか呼び出されません。(※イメージです)##2.returnをつけた場合
“`.py
def aisatsu():
print(‘Hello’)
return (‘Hello’) #別の名前で呼ばれた時はこれを返してねx = aisatsu
[Github Actions] Python + Poetry
## こちらのコードを使って GitHub Actions を試す。
https://qiita.com/mykysyk@github/items/5f08658d0ca2f1c6b32a
## ソースを持ってくる
“`
mkdir -p /tmp/$(date +%Y%m%d) && cd $_
git clone https://github.com/mykysyk/zip-code.git
cd /tmp/$(date +%Y%m%d)/zip-code
“`### こんな感じになる
“`
/tmp/$(date +%Y%m%d)/zip-code
├── LICENSE
├── README.rst
├── poetry.lock
├── pyproject.toml
├── src
│ └── zip_code_app
│ ├── __init__.py
│ └── core.py
└── tests
├── __init__.py
└── test_zip_code_app.py
“`## テンプレート作成
①初めての投稿
初めてQiitaに投稿をさせてもらいます。
具体的な方法とか、よくわからないので、最初はお試しということで、、、#pythonを使ってHello World!!と出力させてみる。
プログラムを始めるとき、どんな言語でもたいてい初めはHello World!!の出力を行うと思います。
(自分もPythonやC言語、Javaを学びましたがそうでした。)
なので今回もお試しということでこれを行いたいと思います。
出力をさせるためには print()関数を使います。
使い方は以下の通りです。“`python:how_to_use_print_function.py
#print()関数の使い方。
print(出力させたい文字列)
“`
文字列というのは、今では説明を省かせてください(お試しなので、、、)
簡単に説明すると、ダブルクオーテーション(“)でくくった文字、
もしくは、シングルクオーテーション(‘)でくくった文字をPythonでは文字列といいます。
(ほかにも作成する方法はあるにはあるが、今回は紹介を省きます。)
それではこれらを使って出力させてみましょう!“`pyt
急にpip installで一部のライブラリのインストールが失敗するようになった件
# はじめに
この記事は2021年9月6日以降に、
pipでのインストールで以下の様なエラーが出て困っている人に向けて書いています。
(私の場合、GDALのインストールが失敗するようになりました)“`
Collecting GDAL==2.2.3
Using cached GDAL-2.2.3.tar.gz (475 kB)
ERROR: Command errored out with exit status 1:(~中略~)
Complete output (5 lines):
/usr/lib/python3.7/distutils/dist.py:274: UserWarning: Unknown distribution option: ‘use_2to3_fixers’
warnings.warn(msg)
/usr/lib/python3.7/distutils/dist.py:274: UserWarning: Unknown distribution option: ‘use_2to3_exclude_fix
PandasのデータフレームをRに読み込ませる
# やりたいこと
rpy2やpyperでPythonからRを呼び出せることは知っていた。しかし,Pythonで整形したデータフレームをRが読み込んでRStudio上などで解析するやり方が探せなかったので,以下にやり方を残しておく。# やり方
確認した実行環境– Python 3.9.0
– R 4.1.1
– pandas 1.2.5
– PypeR 1.1.2“`{python:converter.py}
import pyper
import pandas as pd
from pathlib import Path, PosixPath
from typing import Uniondef save_rds(df: pd.core.frame.DataFrame, file: Union[str, PosixPath]) -> bool:
strfile = str(file)
pathfile = Path(file)
# datetime型があると変換エラーが起こるのでstrにする
df = pd.concat([df.se
Python3 FlaskでMOCK的なAPIサーバを作る(5分で記載)
テストで受けられるサーバを作りたかった。
Mock立てればいいじゃん…て話なんですが、
npmのprismというものを使おうとして、`core.js@1.27` がというエラーが出続けまして…。
解決方法がわからなかったので、Pythonで立てました。エンドポイントは以下の3つだけです。
Python3とFlaskを準備すれば簡単に動きます。“`
localhost:5000/hoge
localhost:5000/healthcheck
localhost:5000/
“`
`/hoge`はPOSTされたデータをそのまま返すだけです。“`serv.py
from flask import Flask
from flask import request
app = Flask(__name__)@app.route(“/hoge”, methods=[‘POST’])
def postHoge():
#ヘッダの形にかかわらず返す。
return request.get_data()@app.route(“/healthcheck”, m
AtCoder参加記録No.5ーABC217
#ABC217
今回参加したABC217についての参加記録2021年9月4日(土)のAtCoder Beginner Contest 217でした。
https://atcoder.jp/contests/abc217
##結果
A,B,C問題を正解
レート:49→72 (+23) Highest!
順位:5793/ 8543
時間: A問題 7:31 B問題 16:10 C問題 27:55
パフォーマンス:281##詳細
###A問題
[問題](https://atcoder.jp/contests/abc217/tasks/abc217_a)提出コード(AC)
“`python:A問題_1.py
S,T =list(map(str,input().split()))
le=min(len(S),len(T))
A=[]
A.append(S)
A.append(T)
AN=sorted(A)if AN[0]==S:
print(‘Yes’)
else:
print(‘No’)
“`[詳細](https://atcoder.jp/co
繰り返し画像の生成 ~Pillow vs OpenCV(というかnumpy)~
# 経緯
小さな画像を連続させて模様を作りたかったのですが、Python3でやろうとするとPillowを使うかOpenCV使うかで悩んだので、この際どっちの方が良いのか実験してみました。
自分用のメモです。# 環境
* Windowns10
* Python 3.7.9
* ライブラリ
* numpy : 1.20.2
* opencv-python : 4.5.1.48
* Pillow : 8.3.1# 連続画像の作り方
同じ画像を連続させた画像をPythonで作る場合、やり方はまぁまぁたくさんあります。今回はPillowで読み込んだ場合とOpenCVで読み込んだ場合を比較しました(自分がよく使うので)やり方は次の通り。各々元の画像を縦に3回、横に4回繰り返し、12枚の元画像が並んだ画像を生成します。
元画像のサイズは`128×128`です。* Pillow
* 背景画像(大きさを「元画像の大きさ×連続させたい縦横の数」で定義しておく)に、元画像を貼り付ける“`p
【Python】CSVに行を足してよいかどうか(新しい値があるかどうか)判断する関数
[先程書いたもの](https://qiita.com/shin1007/items/c9becabb493efff06a8a)とはTFが逆で戻るようになってます。
“`Python
def ok_to_add_data(csv_file:str, data:list) -> bool:
”’
Returns
——-
True when the data has new value.
False when the data has no new value like;
– last_line == data,
– data has missing values and other data is same as values of same index of last_line
”’
# CSV読み込み
with open(csv_file, ‘r’, encoding=’utf8′) as f:
rows = [row for row in csv.reader(f)]
Python3でCSVからJSONへ変換する
Python3を使用して、CSVファイルをJSONファイルに変換します。
## 実行方法
“`
$ python3 csv2json.py -i <入力CSVファイル> -o <出力JSONファイル> –delimiter ‘,’ –header-only 0
“`|オプション|値|
|:——–:|:—:|
|-i|入力CSVファイル|
|-o|出力JSONファイル|
|–delimiter|CSV区切り文字|
|–header-only|0: データも含めて出力したい, 1: ヘッダのみを出力したい|## コード
“`python:csv2json.py
import csv
import json
import argparse
parser = argparse.ArgumentParser()
parser.add_argument(‘-i’, ‘–input’, help=’Input file name (CSV)’, required=True)
parser.add_argument(‘-o’, ‘–output’, help
【Python】CSVの最終行が指定データと一致するかどうか判断する関数
車輪の再発明している感じ、ありますね。
“`Python
def is_same_as_last_line(data, csv_file) -> bool:
with open(csv_file, ‘r’, encoding=’utf8′) as f:
rows = [row for row in csv.reader(f)]
try:
last_line = rows[-1]
# 空白行が最後にある可能性があるので、その対策
if last_line == []:
last_line = rows[-2]
if(last_line == data):
return True
return False
# 行が少なすぎたりするとエラーを返す
except IndexError:
return False
“`
python お一人様一点限り機能
##お一人様一点限りを判定する
重複があるか無いかで判断する。“`
n = int(input())person_list = []
for i in range(n):
person_list.append(input())if(person_list.count(person_list[i]) == 1):
print(“YES”)
else:
print(“NO”)
“`
入力例2
4
Jimmy
Bob
James
Jimmy出力例2
YES
YES
YES
NO
python3 配列に任意の数入れる(簡易版)
###配列に指定する数字文だけ入力を行い配列に入れる。
“`
n = int(input())b = [int(input())for i in range(n)]
b.sort()for j in range(n):
if b[j] % 2 != 0:
print(b[j])
“`“`
b = [int(input())for i in range(n)]
“`
この箇所が重要。
python3 文字列の重複を調べる方法
#①countを使用する場合
“`
print(“Good School”.count(“oo”))
>> 2
“`
####注意
countは数えた文字は再度数えない“`
print(“Goooood”.count(“oo”))
>> 2
“`#②全重複を考える場合
上記の内容を結果3としたいのような場合“`
pattern = input()
string = input()
result = 0for i in range(len(string) – len(pattern) + 1):
portion = string[i : i + len(pattern)]if portion == pattern:
result += 1print(result)
“`入力例1
AA
abdeeAAbAAAbfde出力例1
3###まとめ
上記のように重なるものをどのように扱うかで異なる結果になる。注意して導入しよう。
python3 指定範囲だけ大文字にする (+改行なしの出力)
####スペース区切りの2つの整数と、文字列が入力されます。2つの整数の範囲の部分文字列を、大文字にして出力してください。
“`
a,b = input().split()a = int(a)-1
b = int(b)st = input()
print(st[0:a], end=””)
print(st[a:b].upper(),end =””)
print(st[b:])
“`入力例
2 6
Welcome to the paiza! I`m studying ruby!出力例
WELCOMe to the paiza! I`m studying ruby!##ポイント end=”” 改行無しの出力
print毎に出力される文字列が改行される事は問題ないのですが、もし改行を入れたくない場合は、print関数にオプションの end = “” を設定します。先程と同じ文字列をprintに指定し、1行目のprintにオプション end = “” を設定しました。
“`
print(“1 2 3 4 5 “,end = “”)
print(“A
python3 任意の文字を抽出する(記録)
###スペース区切りの2つの整数と、文字列が入力されるので、2つの整数の範囲の部分文字列を出力してください。
“`
a,b = input().split()a = int(a)-1
b = int(b)st = input()
print(st[a:b])
“`入力例2
2 6
Welcome to the paiza! I`m studying ruby!出力例2
elcom
python3 配列を数値に変換して計算する (記録)
####2つの整数の組がn個与えられるので、各組の計算結果を足し合わせたものを出力してください。
各組の計算結果は次の値です。
・2つの整数の組を足し合わせたもの
・ただし、2つの整数が同じ値だった場合は、掛け合わせたもの“`
time = int(input())
result = 0for i in range(time):
std_in = input()
array = std_in.split()if array[0] == array[1]:
result += int(array[0]) * int(array[1])
else:
result += int(array[0]) + int(array[1])print(result)
“`
入力例1
5
2 1
3 6
4 2
4 4
4 70出力例1
108
python3 配列条件付き 抽出方法(簡易版)
#### 指定した配列(リスト)を定義し、それらの要素のうち5以上の数をすべて足し合わせた値を出力してください。
“`
l = [4, 0, 5, -1, 3, 10, 6, -8]
l_plus = [i for i in l if i >= 5]print(sum(l_plus))
“`
#### 改行区切りで整数がn個入力されるので、n個の整数のうち、5以上のものをすべて足し合わせた値を出力してください。
“`
n = int(input())a = [0]*n
for i in range(n):
a[i] = int(input())a_list = [i for i in a if i >= 5]
print(sum(a_list))
“`