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

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

【Python】JSONから指定のエントリを抽出&他のエントリ内のプロパティと一致する場合はそのエントリ内の値も取得する方法

# 概要
JSONファイルから指定のエントリを抽出し、かつ、他のエントリ内の指定のプロパティと一致する場合はそのエントリ内の値も一緒に取得する方法を、備忘録も兼ねて記載します。
(文章だと意図が伝わりづらいので、サンプルコードを…)

# サンプルコード解説
以下のようなJSONがあるとします。
サンプルなのでわかりやすいようにしていますが、実際は支店(`branch`)も製品(`product_code`)もたくさんある前提です。

“`001_sample_response.json
{
“response”: {
“status”: “0000”,
“company_code”: “12345”,
“branch”: {
“tokyo”: [
{
“product_code”: “001”,
“unit_price”: “100”,
“quant

元記事を表示

\nを改行として解釈されないようにする

“`python

# rawを使う
>>> print(‘namakemono\nmakemono’)
namakemono
makemono
>>> print(r’namakemono\nmakemono’)
namakemono\nmakemono
>>>

# Python3以降では接頭辞にrを使う
>>> a = r”\name\desktop”
>>> print(a)
\name\desktop
>>>

元記事を表示

Fletを初めて使って躓いたことなど

# Fletとは
– Pythonでマルチプラットフォームアプリが作れる言語
– Mobileアプリをビルドできるようにするのはあくまで予定らしい
– 楽しみ
# 概要
– Fletを初めて使って、分かったこと、躓いたことなどを書きます
– Fletのソースコードを読んだりはしていなくて、使いながら分かったことを書きます

# 1. 導入のしかた

– `pip install flet`をします
– 使用するpythonファイルで`import flet`
– 以上!
# 2. `update()`によるControl更新時の注意
– Controlオブジェクトの属性(attribute)を、直接更新してから`update()`する必要があります
– 誤り
“`python
value = “before”
txt = ft.Text(value)

value = “after”
txt.update()

# 表示されるのは before
“`
– 解決
“`python
txt = ft.Text(

元記事を表示

python PySimpleGUIで全角半角 相互変換ツールをお手軽作成

### はじめに

とあるシステムが全角文字しか入力を受け付けないため、文字列を全角/半角に変換するツールをサクッと作りました。

![スクリーンショット 2023-07-03 235155.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577794/86465e66-2493-5e11-a799-4176bfc83ee6.png)

「変換対象のテキスト」に文字列を入力し、「変換」ボタンを押すと、「全角への変換結果」「半角への変換結果」にそれぞれ変換結果が表示されます。変換結果はもちろんコピーできます。ついでに文字列の「削除」ボタンを付けたり、文字列のカウント機能も付けてます。

また、Web上で処理することに抵抗ない方はこちら

https://so-zou.jp/web-app/text/fullwidth-halfwidth/

### 環境

OS: windows11
python 3.7以上

### 仮想環境とインストール
いつものように仮想環境を用意します。
“`
python –

元記事を表示

QRコード生成

## はじめに
初学者がPythonなど勉強しています。

## 目的
(共通)働く環境を改善しましょう。人とAIの仕事の切り分けを推進したい。
(今回)powerappsで読み込むためのQRコード生成

## マイルストーン
1. 目的の確認
2. 現場意向確認
3. AIよコードを生成しておくれ!
4. 付加価値
5. HAPPY!!

## 目的
現状手作業の部分をタブレットでデータ収集+分析への第一歩
QRコードで読み取ることでできるかぎり間違いを無くす。

## コード
chatGPTを少しでも効率よく活用できるようなプロンプトを勉強する。
OUTPUT重視

今回はエクセルファイルから抽出したいため、エクセルファイルから活用
作成時間は30min

“`python:DataDL.py

import os
import math
import openpyxl
from PIL import Image, ImageFont, ImageDraw

def print_qr_codes(excel_file, sheet_name, qr_directory):

元記事を表示

【Python】スネークケースの文字列をキャメルケースの文字列にする方法を2種類紹介 (+モデルクラスにアクセスする方法)

# 概要
`company_code`と言うオブジェクトを`CompanyCode`と言うモデル名にする(スネークケースをキャメルケースにする)方法を2つ紹介します。また単にモデル名を生成するだけではなく、モデルクラスにアクセスする方法も記載します。

# サンプルコード解説
– `str.title()`メソッドを使用する方法
– `capitalize()`メソッドを使用する方法

## `str.title()`メソッドを使用する方法

“`py
object_name = ‘company_code’

def get_model_from_object_name(object_name):
model_name = object_name.title().replace(‘_’, ”)
return model_name

model = get_model_from_object_name(object_name)
print(model)

# 出力結果
# CompanyCode
“`

`str.title()`メソッドは、文字列内の単語の先頭文

元記事を表示

Stable Diffusionの最新モデルSDXL 0.9と過去モデルで生成画像を比較してみた

[Supership](https://supership.jp/)の名畑です。8月28日発売の[総特集 松苗あけみ](https://www.kawade.co.jp/np/isbn/9784309257167/)が楽しみすぎます。ぶ~け作品の数々は今でも私の心の重要な部分を占めています。

## はじめに

6月23日に[Stable Diffusion](https://ja.stability.ai/stable-diffusion)の新モデルであるSDXL 0.9がリリースされました

この新モデルで生成した画像と過去のモデルで生成した画像にどのような差が出るのかを試してみたので共有いたします。

アカウント作成やAPI呼び出しなどの基本的なことは過去記事「[Stable Diffusionでの画像生成をPythonとWeb APIで実装してみた記録](https://qiita.com/nabata/items/153ed75192004420c2e2)」をぜひご覧ください。

**参考:[画像生成AI「Stable Diffusion」最高性能の新モデル「SDXL 0.9

元記事を表示

brew doctorを実行したら”Warning: You have unlinked kegs in your Cellar.”とメッセージが出た

# 環境
>・MacOS Ventura 13.2
・python3.10.4
・Homebrew 4.0.6
・Homebrew/homebrew-core (git revision 344423e6906; last commit 2023-03-10)
・Homebrew/homebrew-cask (git revision 9a50794e6f; last commit 2023-03-11)

# brew doctorを実行したら”Warning: You have unlinked kegs in your Cellar.”とメッセージが出た。

“`python
% brew doctor
==> Downloading https://formulae.brew.sh/api/formula.jws.json
######################################################################## 100.0%
Please note that these

元記事を表示

公開!週末研究ノート09 ー SemanticKernel による文脈を切り替えられるシンプルなSemanticMemory搭載ボット

# はじめに ー 週末研究ノートとは?

個人的に研究的な活動をやるにあたり、オープンにしてみたら面白いかもと思い、自分が興味を持っている ざっくりテーマについて、これから、ゆるい週末研究を公開していこうと思います。(有識者の方のアドバイスも、ちょっとというかかなり期待してます!笑)

どこかの権威的な学会やジャーナルなどで発表する予定はないため、万が一、私の記事を利用する際には自己責任でお願いします。そんな人はいないと思いますが、念のため。

# 今回のサマリ (TL; DR)

– [Semantic Kernel](https://github.com/microsoft/semantic-kernel)を使って、シンプルな(ナイーブな?)メモリ検索機能を追加してみました
– 「LLMについて教えて?」と質問して結果を比較
– メモリなしだと、『LLMは「Master of Laws」の略称』として回答しました
– 記事:[日の丸LLMへ産官学連携、「汎用スパコン」富岳で挑む富士通の勝算](https://xtech.nikkei.com/atcl/nxt/c

元記事を表示

Pytrhonで10進数の緯度経度からメッシュコードを計算する

# プログラム作成の経緯(概要)
Javascriptのライブラリ[Leaflet](https://leafletjs.com/ “leaflet”)(WebMap)と[筆ポリゴン](https://www.maff.go.jp/j/tokei/porigon/ “筆ポリゴン”)(農地区画データ)を利用して、Web上で圃場ごとに栽培管理を行うようなシステムを作ってみたいと思って作ってる中で、**緯度経度からメッシュコードが分かると便利だよね**という場面があったので作ってみました。 いろいろな記事を参考にしながら作ってみたのですが、間違っている部分があったらご指摘ください。

# 目次

[やりたい事](#やりたい事)
[実装](#実装)
[53394525が東京なのか検証する](#53394525が東京なのか検証する)
[まとめ](#まとめ)
[参考](#参考)

# やりたい事
東京 経度 : 35.6894
   緯度 : 139.6917
今回は東京の緯度経度を参考に、入力として(35.6894,139.6917)を与えてあげると 12345678に様な**3次メッシ

元記事を表示

変数の中で複数行に分けて書く場合でも改行をしない方法

変数の中で複数行を改行せず宣言する方法に詰まったので書き残します。
* 見やすく書きたかった
* PEP8の1行79文字以内の規約に引っ掛からないようにするため

“`python
>>> a = “あいうえお”\
… “かきくけこ”
>>>
>>> print(a)
あいうえおかきくけこ

# インデントは揃えたほうがいいかも

>>> b = “リンゴ”\
… “ミカン”
>>>
>>> print(b)
リンゴミカン
>>>

元記事を表示

【Python】EXCELのセルにある文字列と同じ名前のJSONファイルを探してその内容と置き換える方法

# 概要
– EXCELファイルの指定列にある文字列を取得し、同じ名前のJSONファイルを探してその内容を読み込み、セルの値をそのJSONの内容で置き換える、という方法を紹介します。
– 以下のようなエクセルがあり、また記載されているJSONファイルが存在している、という前提です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2710373/560b8c96-a5b6-3658-05f8-693067062628.png)

## サンプルコード解説

“`py
import os
import openpyxl
import json

def replace_content_in_excel(excel_path, column_index, json_files_dir):
“””
EXCELファイルの指定列にある文字列を、同名のJSONファイルの内容で置き換える関数。

Args:
excel_path (str): EXCELフ

元記事を表示

DevelopersIO記事中のLlamaIndexを使ったサンプルコードをLlamaIndex 0.6.37で動作するように修正してみる

# はじめに

以下の記事で、DevelopersIOの記事[【LlamaIndex】Indexにクエリした際に回答で参考にした箇所(リファレンス)を取得する方法](https://dev.classmethod.jp/articles/get-reference-in-query-of-llamaindex/) にあるサンプルコードをLlamaIndex 0.6.32で動作するように修正してみました。

https://qiita.com/revsystem/items/2219bb23f0c3065b2824

その後、[LlamaIndexの記事一覧](https://dev.classmethod.jp/tags/llamaindex/)にある記事を参考にコードを書いていたところ、以下の記事中の`ノード分割の状況を可視化`で示されているコードがLlamaIndex 0.6.37でエラーになることに気づきました。 ( [LlamaIndexを完全に理解するチュートリアル その1:処理の概念や流れを理解する基礎編(v0.6.8対応)](https://dev.classmethod

元記事を表示

【Python】大量のlogファイルをJSON整形されたJSONファイルに一瞬で変換する方法

# 概要
– `001_output.log`から`100_output.log`までのログファイルをそれぞれ`001_output.json`から`100_output.json`と言うファイル名のJSON形式に変更する方法を紹介します。JSONは整形された状態で出力されるようにしています。
– ログファイルは元からJSON形式のログという前提です(`.log`なので整形はされていない)

# サンプルコード解説
“`py
import os
import json

for i in range(1, 101):
# ログファイルとJSONファイルのパスを指定
log_file_path = f”./output_files/{str(i).zfill(3)}_output.log”
json_file_path = f”./output_files/{str(i).zfill(3)}_output.json”

try:
with open(log_file_path, “r”, encoding=”utf-8″) as

元記事を表示

【Python】素数の出力Generator使用

今回の記事は素数をGeneratorを使用して出力するプログラムを作成しました。
是非、勉強の参考にしてください。

## コード

“`python
from typing import Generator

def primlist(number):
n_list = {}
for i in range(2, number + 1):
is_prime = n_list.get(i)
if is_prime is False: # Falseの場合は次の処理に行く
continue
yield i

n_list[i] = True
for j in range(i * 2, number + 1, i):
n_list[j] = False # 2倍の数はFalseにしていく

n = int(input(‘数字入力’)) # 入力を受け取る。
print(f’素数リスト->{[i for i in primlist(n)]}’)

元記事を表示

配列を使って円順列の並び方として同一のものかを判定する・配列の回転

# 円順列

いきなりですが、問題です。a,b,c,d,eの5人が円卓に座るとき、座り方の総数は何通りか。

正解は、“`(5-1)!=24“`通りです!
さすがQiitaを見ている方というだけあって、余裕という感じですね。

それでは、次の問題です。次の二つの並び方AとBは円形に並べた時同じ並びになるでしょうか!?

A: d, b, a, e, c
B: e, c, d, b, a

これは、同じ並びになります。どちらもaを基準に考えると、a→e→c→d→bの並びになっています。
今回はこの判定をプログラムで実装してみます。

# 円順列で考えた時に同一の並びになるかを判定する
まず、2つの配列“`array_a“`と“`array_b“`を用意します。
“`python
array_a = [“d”, “b”, “a”, “e”, “c”]
array_b = [“e”, “c”, “d”, “b”, “a”]
“`
“`array_a“`は変更せず、“`array_b“`の要素を回転させてみます。つまり、最初の要素を取り除いて、最後に追加します。

元記事を表示

自作シューティングゲーム

# はじめに
今回、私が作ったゲームは極めて地味なシューティングゲーム(?)です。
tkinterを使って製作しました。
ゲームの内容、ソースコード、自作サイトのURLを書いておきます。
自己満なので内容に期待はしないでくださいね。
※あとソースコードに説明ないです。

# ゲーム内容
1.プレイヤーはランダムモードか、挑戦モードをホーム画面から選択することができます。
ランダムモードの場合、レベル1~プレイヤーレベルの敵が出現します。
挑戦モードの敵のレベルは、プレイヤーレベル+10です
2.プレイヤーが敵を倒した時に得られる経験値は敵のレベル×10、プレイヤーレベルが1上がるごとに必要な経験値は
1.1倍ずつ増えていきます。
3.プレイヤーの操作については、クリックでクリック位置へ攻撃、右クリックで右クリック位置へ移動。
4.レベル10になるとスキルを選択できる。スキルを使うと5秒間攻撃力、防御力、攻撃速度のうちどれかが2倍になる。
5.最大HPは体力の1000倍、防御率は自分の防御力が自分の最大HPの何%かで決まる(最大85%ダメージ軽減)、
攻撃力は威力×200

元記事を表示

【Python】リストの要素数を取得して処理するとき、長い方の要素数に合わせて処理する方法

# 概要
– リストの要素数を取得して処理を行う場合に、`zip`関数だと短い方の要素数に合わせてペアが作成されてしまい、ちょっと詰まったフェーズがあったので備忘録として残します。

### 短い方の要素数に合わせて処理する場合

“`py
abc_company_codes = [“a”, “b”, “c”]
xyz_company_codes = [“x”]
for abc_code, xyz_code in zip(abc_company_codes, xyz_company_codes):
print(“abc_code:”, abc_code)
print(“xyz_code:”, xyz_code)

# 出力結果
# abc_code: a
# xyz_code: x
“`

– `zip`関数は、複数のイテラブル(リストやタプルなど)をまとめて処理するための関数。
– 大事なポイントは、要素数が異なるリストであっても、短い方の要素数に合わせてペアが作成される、と言うこと。「短い方」と言うことを知らないと詰まってしまう。
– 出力結果を見てわかるように

元記事を表示

PythonでPowerPointからノートを取り出す

PowerPointのノート部分に書き込んだテキストを取り出して音声作成ツールにインポートするファイルを作りたく、方法を探していたら、Pythonでできそうだったので、やってみました。

実行環境:
Windows10(会社PC)
Python 3.10.11(Microsoft Storeからインストール)

やったことは以下になります。

#### 1.専用のPython実行環境作り
軽い環境でやりたかったので仮想環境を作成
※以降自分でつけた仮想環境名を「env_pptx」としてコマンド記載しています
“`
cd [環境置き場]
python3 -m venv env_pptx
“`
これで、環境置き場にenv_pptxというフォルダができて、個別にPython環境が作れるようになります。

#### 2.python-pptxのインストール
仮想環境の中で以下実行
「Successfully installed」が出てくればOK
“`
cd [環境置き場]\env_pptx\Scripts
activate.bat
pip install python-pptx
“`

元記事を表示

【Python】指定されたディレクトリ内のすべてのシェルスクリプトファイルに特定の行を追加する方法

# 概要
– 指定されたディレクトリにある全てのスクリプトファイルの〇〇行目に特定の行を追加するコードを紹介します。

# サンプルコード解説
– 以下、指定されたディレクトリにある全てのスクリプトファイル(.sh)の14行目に`”request_id”: “${RANDOM_NO}”,`を追加するPythonコードです。

“`py
import os

def add_line_to_scripts(script_directory):
script_files = sorted([f for f in os.listdir(script_directory) if f.endswith(‘.sh’)])

for script_file in script_files:
script_path = os.path.join(script_directory, script_file)
lines = []

with open(script_path, ‘r’) as f:
lines =

元記事を表示

OTHERカテゴリの最新記事