Python関連のことを調べてみた

Python関連のことを調べてみた
目次

#30 正規表現でマッチした文字列を順に置換したい

## はじめに
[前回、ネストのあるjsonの文字列の置換について](https://www.nxted.co.jp/blog/blog_detail?id=23)とりあげましたが、今回はその番外編として、正規表現でマッチした文字列をリストに沿って置換する方法について備忘録としてまとめていきたいと思います。

今回やりたい内容は

1. 正規表現でマッチした文字列の一部を残し、その他のマッチした部分は削除する
2. 拡張子を「jpg」から「png」に置換する

です。

## 使用するjson
前回使用したjsonをベースに、いくつか情報を追加しました。
“`sample.json
{
“data”: {
“id”: {
“num”: “1”
},
“group”: {
“name”: “ことわざ”,
“folder”: {
“nodes”: [
{
“id”: 1

元記事を表示

VueとFlaskでWebアプリを簡単に構築してみた-その1(環境構築とサンプル構築)-

# 定型文を表示するのみのアプリ開発
:::note info
本記事のコマンドはMacに対応しています
Windowsの場合はpython3, pip3をpython, pipに置き換えてください(3を削除)
:::

## 1. はじめに
このプロジェクトでは、Vue.jsとFlaskを使用して、シンプルなWebアプリを作成します。まずは、定型文を表示するだけのアプリを作成し、フロントエンドとバックエンドの基本的な連携方法を学びます。

### 学習目標
– FlaskでシンプルなWebサーバーを作成する
– Vue.jsでフロントエンドを構築し、サーバーからのデータを表示する
– フロントエンドとバックエンド間のデータ連携の基本を理解する

## 2. 開発環境の構築

### 必要なツールとソフトウェアの準備
以下の作業を順番に行っていきます:
1. Python 3.xのインストール
1. 仮想環境の構築
1. Flaskのインストール
1. Node.jsのインストール

### 1. Python 3.xのインストール
手順についてはこちらのサイトを参考に実行してください

元記事を表示

MinecraftのDataPackのテンプレートをPythonで構築

## はじめに
Minecraftのデータパック製作で関数を作ってささっと試したいとき、それにいちいち手間をかけないで爆速でデータパックの準備を済ませたいと思ったことありますね?
今回はPyhtonでMinecraftのデータパックの土台を自動構築していこうと思います。

## 環境
Python: 3.12.5

Minecraft: 1.21

OS: Windows 11

## やること
Pythonをインストールしてない人はインストールしちゃってください。
https://qiita.com/icoxfog417/items/e8f97a6acad07903b5b0
Pythonをインストールしている人だったら、下のコードをデータパックを生成したいフォルダーに下のPythonをとりあえず貼ってください。
“`python:data_pack_gen.py
import os
import json

pack_name = input(“pass the pack name:”)
os.makedirs(f”./{pack_name}/data/minecraft/”)

元記事を表示

mise-en-placeとuvでPython環境をセットアップする

これまで[pyenv](https://github.com/pyenv/pyenv)、[venv](https://docs.python.org/3/library/venv.html)、[direnv](https://direnv.net/)でPython環境を用意していたのだが、[mise-en-place](https://mise.jdx.dev/)と[uv](https://astral.sh/blog/uv)に乗り換えることにした。

そこで、プロジェクトで使用するPythonバージョンを指定し、仮想環境をセットアップする方法を記しておく。

“`sh
# 使用するPythonバージョンの指定
mise use python@3.12

# 仮想環境の作成
uv venv

# venvディレクトリの登録
cat << EOF >> .mise.toml

[env]
_.python.venv = “.venv”
EOF

# 手動で更新した.mise.tomlの有効化
mise trust
“`

元記事を表示

Pythonでリストのインデックスと要素を同時に取り出せる便利な関数があった

## はじめに
Pythonを使ってプログラムを作成していると、リストやタプルなどのコレクションデータを扱うことがよくあります。その際、リストの要素をループで処理しながら、同時に各要素のインデックス(番号)も取得したいことはありませんか?実は、そんなときに非常に便利な関数がPythonには存在します。それが enumerate です。

この記事では、enumerate 関数を使ってリストのインデックスと要素を同時に取り出す方法について詳しく解説します。

### enumerate 関数とは?
enumerate はPythonの組み込み関数で、反復可能なオブジェクト(リストやタプル、文字列など)を取り込み、それにインデックスを付けてくれる関数です。通常、for ループを使ってリストを処理する場合、インデックスとその値を別々に管理するのは手間がかかります。しかし、enumerate を使えば、これを簡単に実現できます。

### 基本的な使い方
まずは、enumerate の基本的な使い方を見てみましょう。

“`
fruits = [‘apple’, ‘banana’, ‘che

元記事を表示

ディレクトリ構造を超えて:関数・クラス・メソッドまで含むPythonツリービューアの作成

## はじめに

Pythonプロジェクトが大規模になるにつれて、そのコードベース全体を理解することがますます難しくなります。特に、ディレクトリ内のファイルが増えると、どのファイルにどの関数やクラスが含まれているのかを把握するのは至難の業です。このような状況で役立つのが、ディレクトリ構造に加えて、各ファイルに含まれる関数やクラス・メソッドまでを視覚的に表示するツリービューアです。

本記事では、Pythonスクリプトを使用してディレクトリ構造だけでなく、その配下にある関数、クラス、メソッドを階層的に表示する方法について解説します。このツリービューアを使えば、コードベースの全体像を簡単に把握でき、開発作業の効率化が図れます。

## 必要性と用途

ディレクトリ構造だけを表示するだけでは、複雑なコードベースの理解には不十分です。特に、大規模プロジェクトでは、どのファイルにどのような関数やクラスが定義されているのかを一目で確認できることが重要です。このようなニーズに応えるために、関数、クラス、メソッドまでを含むツリービューアが必要になります。

このツリービューアは、プロジェクトのコードレ

元記事を表示

もう迷わない。画像でイメージするbisect_left / bisect_right

# はじめに
### ~bisect_leftを使うたびに頭が爆発しているあなたへ~
`bisect_left` / `bisect_right` 関数は、`bisect`モジュールに用意されている、二分探索を用いて要素が配列の中の何番目かを取得することが出来る関数です。
競技プログラミングなどで、”○○以下の要素が何個か”などを高速に求めたい時、よく使用します。
ただ、**「この値を入れたらどんな値が返ってくるか」** や
**「値が配列に含まれている時はどんな値が返ってくるか」** など
使うたびに頭が爆発していませんか?
この記事は、そんなあなたに向けた記事です。
これを見ればもう迷うことはないでしょう。
# この記事の対象読者
この記事を読んでいる段階は以下とします。
* 二分探索を理解していて、`bisect_left`も使ったことがある
* 問題の考察を終わらせて、あとは`bisect_left`を使うだけ
* `bisect_left`を使うたびに頭が爆発している

「二分探索って何?」って方は他の方の二分探索の記事をご覧ください。
二分探索は競技プログラミングにおける

元記事を表示

友愛数を求めるプログラム

友愛数を求めるプログラムを作ったので簡単な解説と一緒に載せておきます。実行環境はVisual Studio Community 2022バージョン17.10.1です。

# 概要
友愛数とは、異なる2つの自然数の組で、自分自身を除いた約数の和が互いに等しい数のことです。例えば、
220の自分自身を除いた約数の和は
“`math
1 + 2 + 4 + 5 + 10 + 11 + 20 + 22 + 44 + 55 + 110 = 284
“`
284の自分自身を除いた約数の和は
“`math
1 + 2 + 4 + 71 + 142 = 220
“`
なので互いに等しいため、220と284は友愛数となります。

# コード
友愛数を求めるC++20のコードを以下に記載しています。
“`C++:Amicable.cpp
#include

//自分自身を除いた約数の和を求める関数
long long sum_divisor(long long x)
{
long long sum = 1; //約数の合計を入れる変数

for (long long i

元記事を表示

5ステップでPyPIデビュー:ライブラリ公開ガイド【pyproject.toml版】

# PyPIへのライブラリ公開ガイド:5ステップで学ぶ実践的アプローチ

## はじめに

本記事では、`pyproject.toml`を使用してPyPIにライブラリをアップロードする方法を、実際のソースコードと共に5つのステップで詳しく解説します。
初めてオープンソースライブラリを開発し公開する方々に向けた内容となっています。

## オープンソースの重要性

オープンソースソフトウェアの開発と公開は、プログラミングコミュニティにとって非常に重要です。以下に、その主な理由をまとめます:

– **知識の共有**: 他の開発者が学び、改善することができる
– **協力と成長**: コミュニティからのフィードバックにより、ソフトウェアが進化
– **再利用性**: 車輪の再発明を避け、開発効率が向上
– **透明性**: コードが公開されることで、セキュリティや品質の向上につながる
– **イノベーション**: 既存のプロジェクトを基に、新しいアイデアが生まれやすくなる
– **キャリア向上**: 個人の技術力とプレゼンスを高める機会になる
– **コスト削減**: 多くの人が無料で

元記事を表示

Python仮想環境の基本コマンドガイド(macOSとLinux向け)

# はじめに

Python開発において、プロジェクトごとに独立した環境を作成することは非常に重要です。
macOSとLinuxユーザーのために、Python仮想環境を管理するための基本的なコマンドをまとめました。(毎回調べ直す手間を省くためにまとめました。)

# まとめ

macOSとLinux用のPython仮想環境の基本的なコマンドは以下の通りです:

1.仮想環境の作成:

“`sh
$ python -m venv venv
“`

2.仮想環境の有効化:

“`sh
$ source venv/bin/activate
“`

3.仮想環境の無効化:

“`sh
$ deactivate
“`

4. 仮想環境の削除:

“`sh
$ rm -rf venv
“`

これらのコマンドを使用することで、macOSとLinux上でPythonの仮想環境を簡単に作成、有効化、無効化、そして削除することができます。
仮想環境を使用することで、プロジェクトごとに独立したPython環境を維持し、依存関係の衝突を防ぐことができます。

# 参考
* Python公式

元記事を表示

【カニバリ対策】データサイエンス×Pythonを使った、SEO上位表示策

カニバリゼーション対策の概要

今回はSEO対策の一つである、カニバリゼーション対策についてデータサイエンスの知見とPythonを用いて効率的かつ効果がある対策を検討します。

カニバリゼーションとは?

二つ以上の記事が同じキーワードでランクインしていること。例えば、「千葉 お土産 選び方」というキーワードでGoogle検索をし、自社メディアが5位と15位に同時にランクインしている状況のことです。

なぜカニバリゼーションが良くないのか?

理由は記事の評価が分散してしまう可能性があるためです。先ほどの例でいえば、5位の記事を本来は評価してほしいはずなのに、15位の記事にも評価が与えられてしまいます。そうすると、他の競合サイトが上位表示をしてしまう可能性があります。

Googleの検索エバンジェリストのジョン・ミュラーも、以下のようにカニバリの影響を話していました。
>「カニバリが発生している状況は、子供たちが一列に並びながらも、同一サイト内の2人が共に一番になりたいと思って争っているような状況。このような状況では、最終的に他の誰

元記事を表示

Pandasのいろいろな機能を深堀りする

#### はじめに
pandasは、Pythonでのデータ解析において不可欠なライブラリであり、特に大規模データの処理や操作においてその強力さを発揮します。pandasは継続的に更新されており、最新バージョンではより効率的で直感的なデータ操作を可能にする新機能が追加されています。本記事では、これらの新機能について詳しく解説し、どのように活用できるかを具体的な例とともに紹介します。

#### 1. `DataFrame.attrs`でのメタデータ管理

`DataFrame.attrs`は、pandas DataFrameにメタデータを格納するための新しい機能です。これまで、DataFrameにはデータそのものしか保持できませんでしたが、`attrs`を利用することで、データセットの説明や作成者情報など、カスタムのメタデータを簡単に追加できるようになりました。例えば、データフレームの由来や処理過程の情報を含めることで、データの追跡や再利用が容易になります。

“`python
import pandas as pd

df = pd.DataFrame({‘A’: [1, 2, 3]

元記事を表示

最新のPythonのスマートなコードの書き方を知る

Pythonは、シンプルで直感的な構文と豊富なライブラリで知られていますが、バージョンが進むごとに新しい機能や改善が追加され、ますます便利になっています。本記事では、最新のPythonに追加された効率的なコード記述方法や賢い機能について調べてみました。

## 1. マッチステートメント(Match Statement)
Python 3.10で導入されたマッチステートメントは、従来の`if-elif-else`構文に代わるものとして登場しました。これは特に、複雑な条件分岐やデータ構造のパターンマッチングが必要な場合に役立ちます。

### パターンマッチングの基本構文

“`python
def http_status(status):
match status:
case 200:
return “OK”
case 404:
return “Not Found”
case 500:
return “Internal Server Error”

元記事を表示

銀河の中心にブラックホールを置き、その周りを多数のカラフルなパーティクルが回るゲーム。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3838874/d8015bef-1bb1-ba50-25f5-34f7ef8ab635.png)

![スクリーンショット 2024-08-14 065051.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3838874/7386434d-5b08-6817-35e4-292ab8414a2b.png)

### 画面左上にブラックホールを置き、その周りを多数のカラフルなパーティクルが回るゲームです。
スペースキーを押すとゲームが始まります。

“`python
import http.server
import socketserver
import tempfile
import webbrowser

html_content = “””



元記事を表示

すべての量子ビットに演算ユニットをあてがい、同時計算を行うことで量子計算機を模倣します。GPU並列計算で。

![faa7dd4f-41e0-4c52-bc59-6b347d917c49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3838874/d3342a37-c633-854f-a4da-5e28161ac33a.png)

#### ショートストーリー: 「量子の彼方へ」

東京の喧騒から少し離れた静かなオフィスで、若きプログラマー、渡辺亮介は深夜までコンピュータの前に座っていた。彼のデスクには、最新のGPUが搭載された強力なPCがあり、画面には無数のコードが並んでいる。

亮介は、幼い頃から科学とテクノロジーに魅了されていた。特に量子コンピュータという概念に心を奪われ、大学では物理学を専攻した。だが、現実世界での量子コンピュータの開発には膨大なコストと時間がかかる。その事実に直面した彼は、いつしか夢を諦めかけていた。しかし、プログラマーとして働くうちに、彼の情熱は再び燃え上がった。

「GPUの並列処理能力を使えば、デジタル上で量子コンピュータを再現できるかもしれない。」

そう考えた亮介

元記事を表示

Kaggle Masterに学ぶ機械学習実践アプローチ 写経 07

“`Python
# %%
import pandas as pd
from sklearn.datasets import fetch_california_housing
import numpy as np

# %%
data = fetch_california_housing()

# %%
data

# %%
X = data[“data”]
col_names = data[“feature_names”]
y=data[“target”]

# %%
# pandasに変換
df = pd.DataFrame(X, columns=col_names)

# %%

df

# %%
df[“MedInc_Sqrt”] = df.MedInc.apply(np.sqrt)

# %%
df.corr()

# %%
from sklearn.feature_selection import chi2, f_classif, f_regression, mutual_info_classif, mutual_info_regression, SelectKBest

元記事を表示

青空文庫読み上げソフトを作成する

# はじめに
これはあくまで、個人で利用するために作成したものであり、これを用いて作成したファイルの二次配布などによる損害や損失に対して、責任を負うことはできません。

# 使用サービス
以下の二つを利用してソフトウェアを作成する。使用言語はpython。
## 青空文庫
青空文庫は、著作権の消失した様々な作家の本を無料で読むことのできるサイトである。

https://www.aozora.gr.jp/index.html

## VoiceVox
VoiceVoxは、ずんだもんや四国めたんをはじめとする文章読み上げソフトである。

https://voicevox.hiroshiba.jp/

VoiceVoxには起動した際にローカルホスト(http://localhost:50021/docs#/) にHTTPサーバーを立ち上げローカルホストでのAPIの利用が可能になっている。

# 問題
これを行うにあたって3つの問題が発生した。
### 英語読めない問題
voicevoxでは英語を読み込んで発音することができない。そのため、英語をカタカナに変換する必要がある。

####

元記事を表示

【Python】Tkinterで2つのデータを結合し出力するGUIアプリを作成する

# はじめに
本記事ではPythonのTkinterライブラリを使って2つのデータ(今回はcsvとエクセル)を結合し出力するGUIアプリを作成します。

# 作成したGUIアプリについて
今回作成したGUIアプリは以下の通りです。

## 実装機能
1. 結合に使うデータをダイアログで選択する
2. 出力データを格納するフォルダをダイアログで選択する
3. 結合・出力処理を実行する
4. 結合ファイル・出力フォルダが未選択の場合、アラートを出す
5. 処理実行中は処理中のプログレスバーを出す
6. 処理が終わったら完了のメッセージを出す

## 画面
– 初期画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3292716/6211d024-fd06-3ba3-607c-07a41bb03e0a.png)
 
– ダイアログの表示(参照ボタン押下時)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.c

元記事を表示

げんきなおばあちゃんでいたいと思うPythonデータ分析

政府統計Statを使ってデータ分析してみました。
APIで統計データを取得して知りたい情報を加工してグラフとして表示します。

# データ取得(APIを使用)
統計局からAPIを使ってデータをもらってきます。

“`

with open(‘env.json’, ‘r’) as f:
env_vars = json.load(f)

# API_KEY を取得する
api_key = env_vars[‘API_KEY’]
df = jdr.get_data_estat_statsdata(api_key, statsDataId=”0003293502″)

“`

APIKEYはe-Statで登録してもらってきます。
https://www.e-stat.go.jp/mypage/user/preregister

statsDataIdはそれぞれの統計データに紐づいています。
リクエストのパラメータに記載されていることもあります。

“`
import jpy_datareader as jdr
“`
はe-StatのAPIを使いやすくするためのライラブリです。

元記事を表示

Python lambda関数、使いどころはここ!1行で書けるアロー関数風の魔法

## はじめに
こんにちは、Pythonエンジニアの皆さん!今回は、Pythonの中でも特に便利で魔法のような機能を持つlambda関数について、その使いどころと魅力をご紹介します。lambda関数は、1行で書けるアロー関数風の短い関数で、コードをよりシンプルかつ読みやすくする強力なツールです。

## lambda関数とは?

lambda関数は、Pythonの匿名関数です。通常の関数定義(`def`キーワードを使用)とは異なり、名前を持たず、1行で記述できます。構文は以下の通りです:

“`python
lambda 引数: 式
“`

## lambda関数の魅力

1. **簡潔性**: 1行で関数を定義できるため、コードがスッキリします。
2. **一時的な使用**: 一度しか使わない小さな関数に最適です。
3. **可読性**: 適切に使用すれば、コードの意図が明確になります。
4. **関数型プログラミング**: `map()`、`filter()`、`reduce()`などの関数と相性が良いです。

![image.png](https://qiita-image-

元記事を表示

OTHERカテゴリの最新記事