Python3関連のことを調べてみた2020年04月21日

Python3関連のことを調べてみた2020年04月21日

[python] 圧縮と解凍

## やりたいこと
– あるディレクトリ内の全ファイルを別のフォルダに圧縮
– 圧縮したファイルを元のディレクトリに解凍

## ポイント
powershellの時は7zipを使ってコマンドラインから操作していたけれど、他に何かないかと
調べてみたらすごく便利なものがあった 

– **“`shutil“`**を“`import“`して使う
– 圧縮: **“`shutil.make_archive“`** [圧縮先のパス], [フォーマット], [圧縮したいディレクトリのパス]
– [**圧縮先のパス**]には**拡張子は入れない**
– 解凍: **“`shutil.unpack_archive“`** [解凍したいパス], [解凍先]
– [**解凍したいパス**]には**拡張子を入れる**

## サンプル

“`python:圧縮
import shutil

#圧縮したいファイルのディレクトリ
done_dir = ‘C:/test/output/’
#圧縮先
output_dir = ‘C:/test/done/testzip’

z

元記事を表示

茨城県の新型コロナウイルス感染症患者の発生状況の表を作成 (その2)

次のページのデータソースを変更しました。
[茨城県の新型コロナウイルス感染症患者の発生状況の表を作成](https://qiita.com/ekzemplaro/items/43f54264acaf33efb284)

データソース
>[新型コロナウイルス感染症
対策サイト(非公式) ](https://ibaraki.stopcovid19.jp/)

JSON の取得

“`bash
wget https://raw.githubusercontent.com/a01sa01to/covid19-ibaraki/development/data/data.json
“`

データの変換

“`bash
jq .patients data.json > patients.json
./ibaraki_convert.py patients.json data_ibaraki.json
“`

“`py:ibaraki_convert.py
#! /usr/bin/python
# -*- coding: utf-8 -*-
#
# ibaraki_convert.py
#

元記事を表示

欅坂46のメンバーのブログの画像をスクレイピング

用意したディレクトリ

“`
bs4
– data(ファイル)
– keyaki_scraping.py
“`

“`python:keyaki_scraping.py
import requests, urllib.request, os
from bs4 import BeautifulSoup
def keyaki_scraping(a,b):
for i in range(a,b):
url = ‘https://www.keyakizaka46.com/s/k46o/diary/member/list?ima=0000&ct=’+str(i)
if not os.path.isdir(“*/bs4/data/” +str(i)):# ”member_name”のフォルダがない場合
print(“フォルダ作成”)
os.mkdir(“*/bs4/data/” +str(i))
cnt = 0

# BeautifulSoupオブジェクト生成

元記事を表示

【Python】初中級者が解くべき過去問精選 100 問を解いてみた【Part2/22】

**目指せ水色コーダー!!!!!!**

ということで、
[レッドコーダーが教える、競プロ・AtCoder上達のガイドライン【中級編:目指せ水色コーダー!】](
https://qiita.com/e869120/items/eb50fdaece12be418faa#2-3-%E5%88%86%E9%87%8E%E5%88%A5%E5%88%9D%E4%B8%AD%E7%B4%9A%E8%80%85%E3%81%8C%E8%A7%A3%E3%81%8F%E3%81%B9%E3%81%8D%E9%81%8E%E5%8E%BB%E5%95%8F%E7%B2%BE%E9%81%B8-100-%E5%95%8F)(@e869120さん)
>
AtCoder で水色コーダー、つまりレーティング 1200 を少ない問題数で達成するために、茶色コーダー・緑コーダーにとって適切な教育的良問を 100 問集めました。

こちらの記事の`初中級者が解くべき過去問精選 100 問`
を**Python**で解いていきます!
@e869120さんに感謝!!!!!!

#「Part2」〜工夫する全列挙編〜

元記事を表示

PythonとGraphvizで二分探索木を描画する

こんにちは!Nagacyです。

今回はGraphvizを使って、要素に重複のある二分探索木の描画をしてみました。

# 二分探索木とは?
↓ の画像のように、親ノードより小さいものは親ノードの左下に、大きいものは右下に配置していった二分木のこと。

親ノードと同じ値のものはどちらでもいいですが、どちら側に配置するかは統一しないといけません。
![binTreemin.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/618093/a0c7831c-a1b9-f65e-f697-8e609f010093.png)

※画像はWikipediaの二分探索木の項目より

# Graphvizとは?
グラフを描画してくれるツールパッケージです。本来はDOTという言語を用いて記述するのですが、

Python上でも書けるようにしたgraphvizというライブラリがあるので今回はそれを利用しました。

# コード

Graphvizでは同じ値のノードは勝手に一つにまとめられてしまいます。
今回はそれを避けるた

元記事を表示

djoserを使ったDjango REST Frameworkでのカスタムユーザーモデル認証機能の実装

# djoserとは

[djoser](https://djoser.readthedocs.io/en/latest/index.html)とはDjango REST Framework上での基本的なユーザー認証や登録などの認証周りをサポートしてくれるライブラリです。
カスタムモデルに対しても使え、Djangoのコードを再利用するような形をとるのではなく、Single Page Application(以下SPA)によりフィットするようなアーキテクチャを目指して作られています。

今回はdjoserの最もシンプルな認証機能の実装について書きます。
なお、この認証はセキュリティの面などから実際に使用するべきではなく、以下のJWT認証のようなより強固なセキュリティの設定があります。
あくまでお手軽な認証として紹介します。

ソースコードは[こちら](https://github.com/Kuehar/djoser_customuser)

なお、以下の全てが導入後にエンドポイントとして使えます。

>/users/
/users/me/
/users/confirm/
/users/

元記事を表示

非再帰 Euler Tour を Python でやる

## 非再帰 Euler Tour を書く

Euler Tour に限らなくてもいいんですが、 DFS を非再帰で書くと若干大変ですよね。それの私なりの書き方です。先に方針を書くとこんな感じです。

– Python で非再帰 DFS で Euler Tour を書く
– DFS はスタックで管理する
– 追加するときは、行きがけ用と帰りがけ用の2つずつ追加する

### 入力部分

$N$ 頂点の木が辺で与えられるとします。 1-indexed の場合は途中で $1$ 引いてください。

“`test.py

N = int(input())
X = [[] for i in range(N)]
for i in range(N-1):
x, y = map(int, input().split())
# x, y = x-1, y-1
X[x].append(y)
X[y].append(x)

“`

### 再帰

まずは再帰で書いてみます。 ET は Euler Tour の頭文字です。各頂点を処理する際は

* リストに追加 → 子た

元記事を表示

【エラー対策】django-herokuのインストールのエラー対応

# 1. 背景
https://qiita.com/norifumi92/items/a4b3dc4b3a1d474317c8
を基に、CSVファイルのアップロード、ダウンロード機能を実装しようとしたところ、
django-herokuのinstallでつまづいたので、備忘のために本ページを作成した。

# 2. 実行環境
環境
“`
mac OS Catalina 10.15.4
“`

# 3. エラーメッセージ

“`
(open3d) csv_uploader $ pip install django-heroku
Collecting django-heroku
Using cached django_heroku-0.3.1-py2.py3-none-any.whl (6.2 kB)
Requirement already satisfied: dj-database-url>=0.5.0 in /Users/[User]/anaconda3/envs/open3d/lib/python3.7/site-packages (from django-heroku)

元記事を表示

Amazon EC2にuwsgiをインストールする

Pythonでサービスを作ろうとしたんですが、
uwsgiをインストールできなかったんで、困った。
色々しらべて、以下を入れれば大丈夫だとわかったのでメモ。

sudo yum install python3-pip python3-devel
sudo yum groupinstall “Development Tools”

sudo pip3 install –upgrade pip

pip install wheel
pip install uwsgi

`Development Tools`を入れないとコンパイルできないみたいです。
おそらくC言語で書かれたものとかをコンパイルするために必要なものだと思います。
この問題は最小構成のCentOS系サーバだとありそうですね。

wheelもPythonのモジュールのコンパイル?で必要なのかな。
いらないかもしれません。

無事インストールできました。

元記事を表示

【Python】scarapyを使ってJリーグの選手情報をクローリングして表にしてみた!

#はじめに
##今回やりたいこと
[前回の記事](https://qiita.com/yokubarisanyuyu/items/156be4e6ac0ebadc7fac)の続きとして、scrapyというクローラーフレームワークを使って、Jリーグのデータサイトの選手情報をクローリングして取得したいと思います。
##結果
こんな感じで一覧表になりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/432257/f8dbf970-9fee-0654-93fd-a7d827ddd9f4.png)
※Jupyter-notebookでCSVファイルを読み込んで、DataFrameで表示しています。
#コードと解説
##前提
– 開発環境
– Anaconda
– Python3

##流れ
1.Jリーグのデータサイトのをチェック
2.scrapyのプロジェクト作成
3.settingとItemを修正
4.複数サイトをクローリング設定
5.Jリーグのサイトを見ながら選手情報をスクレイピング

元記事を表示

言語処理100本ノック 2020をやった 第2章

# はじめに
満を持して[言語処理100本ノック 2020](https://nlp100.github.io/ja/)が公開されたので早速やってみます。1章は2015と全く同じようなので(しかもちょうどそこだけはやっていたので)、2章からやっていきます。

いくつかQiitaにも既に記事は上がっていますが、自然言語処理の概観が学べる上に、序盤は言語処理に限らずLinux初心者や竸プロ初心者にも役に立つと思います。

# 第2章: UNIXコマンド
popular-names.txtは,アメリカで生まれた赤ちゃんの「名前」「性別」「人数」「年」をタブ区切り形式で格納したファイルである.以下の処理を行うプログラムを作成し,popular-names.txtを入力ファイルとして実行せよ.さらに,同様の処理をUNIXコマンドでも実行し,プログラムの実行結果を確認せよ.

## 10. 行数のカウント
行数をカウントせよ.確認にはwcコマンドを用いよ.

“`python:コード
import pandas as pd

df = pd.read_csv(‘popular-names.txt

元記事を表示

anaconda installについて教えてください。

choose install locationの画面でinstall locationを指定すると、次のような警告が出るのは何故ですか?

Directory ‘C\User\ユーザー’is not empty,please choose a different location.

※locationを変更しても同様の警告が出てしまい、インストールできません。

元記事を表示

AtCoderで使える!Pythonで短くコードを描くテクニック集!

##はじめに
この記事はAtCoder灰色の初心者がまとめたメモ書き程度のものです。あまり参考にできないこともあるかもしれません。ごめんなさい。

これらのコードはすべてAtCoder上のPython3(3.4.3)および新ジャッジ版Python(3.8.2)で動作することを確認しています。

また、この記事ではコードは以下のように記載しています。

“`python
#入力
#コード
#出力
“`

また、基本的には、コードを短く書くということは、可読性を低くし、読む人に誤解を与えやすく、推奨されていないことであることに注意してください。

なので基本的には読みやすいコードを書くことをお勧めします。Python で全言語 Shortest Code やPython 内 Shortest Code を目指したい!!という人にはこの記事はおすすめかもしれません。

#1.0 入力基本操作
###1.1 よく使われる関数
######eval()
文字列を実行してくれる関数です。[](~などで活用できるかもしれません)

“`pyth

元記事を表示

福島県の新型コロナウイルス感染症患者の発生状況の表を作成

Web で閲覧できる次の表を作成します。
>[福島県の新型コロナウイルス感染症患者の発生状況](https://ekzemplaro.org/corona/fukushima_patient/)
![fukushima_apr20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179446/d67a2ca2-325f-2657-81cf-65c7f7403ea7.png)

データのソースは福島県のサイトにある csv です。
>[/covid19/patients](http://www.pref.fukushima.lg.jp/w4/covid19/patients/)

csv の取得

“`bash
URL=”http://www.pref.fukushima.lg.jp/w4/covid19/patients”
#
wget $URL”/070009_fukushima_covid19_patients_200420.csv”
“`

JSON への変換

“`bash
iconv -f

元記事を表示

Pythonで重複ありの組み合わせ

ここではPythonを使って重複ありの組み合わせが何通りあるかを計算するコードを書いていきます。

### factorialを使う。

“`ruby:

from math import factorial

print(“2つの正の整数を入力してください。”)
a, b= map(int, input().split())
h = (factorial(a+b-1))/(factorial(b)*factorial(a-1))
print(str(a)+”個のものから”+str(b)+”個のものを重複を許して選ぶ方法は”+str(h)+”通りです。”)
“`

以下の様に書くとmathに含まれる関数を全部見れます。

“`ruby:
import math
help(math)
“`

### factorialを使わない。

“`ruby:
print(“2つの正の整数を入力してください。”)
a, b= map(int, input().split())
n = a + b -1
m = n
l = a-1
while n > b+1:
m = m *

元記事を表示

Python3とtkinterでボタンの実装にてこずる話

##経緯
退屈なことはPythonにやらせなさいと教わったので、そうしようと思いました。
とりあえずCUIベースでいろいろ作って、それはそれは満足のいくものができました。また、僕の作ったスクリプトは、いろんな人のめんどくさいを解消できるものだったので、みんなに使ってもらおうと思いました。**GUIを作ろう。**コンマ2秒の思いつき。
僕はかつてC言語でGUIをを実装しようと思って、あきらめているので、割と不安でしたが、Qiitaの皆様のおかげで、サクサク進みました。

##どうやらtkinterがいいらしい
知らんけど。kivyとかもやったけど、ちょっと複雑になるし、文献も少ないかな?
地味でよければtkinterで十分だし、応用が自分でもできる気がします。ファイルダイアログとか簡単に実装できます。そう思って、よくまとまったチュートリアルてきな記事を見ながら実装します。
***だがしかし、ボタンをみんなが言う通りに実装しても、うまく動いてくれません。***

##問題点
– ボタンを押すとGUIが止まる。(画面が応答しない)
– ボタンが見た目上、押しっぱなしになってしまう
– ボタ

元記事を表示

Atcoder ABC163 A-DをPython3で

今回は残念ながらUnratedでした

#A Circle Pond
円周の式に当てはめるだけ。円周率は3.14とかではなくmathのpi使いましょう。

“`ABC163a.py
import math

a=int(input())

print(math.pi*2*a)
“`

#B Homework
夏休みの日数-宿題の総日数の差を出力する。

“`ABC163b.py
n,m=map(int,input().split())
a=list(map(int,input().split()))
for i in a:
n-=i
if n<0: #宿題の総日数が夏休みの日数を上回った場合 print(-1) exit() print(n) ``` #C Management 上司1,2...nに対応する配列を用意し、$A_n$が指し示す上司を$+1$する。 配列が0から始まるのでそこだけ気を付ける。 ```ABC163c.py n=int(input()) l=list(map(int,input().split()))

元記事を表示

Pythonで要素数カウントする方法(辞書型)

#はじめに
今回の主なテーマは要素数をカウントしたいときに辞書型でカウントして格納する方法を書いていきたいと思います。自分がよく使うので復習の意味を込めています笑

AtCoder Beginner Contest 163のC問題でも活用できたので、おまけとして問題も解説していきます。

[AtCoder Beginner Contest 163](https://atcoder.jp/contests/abc163)

#C – management

まずは本題の問題の問題からみていきましょう。
要素数をカウントする問題だけみたい方はここだけ読んでください。

スクリーンショット 2020-04-20 0.07.31.png

問題の題意は数字が与えられてその数字が何回出現するかをカウントしたいというこ

元記事を表示

AtCoder用にローカルでコードテスト環境を作る(Python,jupyter)

AtCoderが重い時、サイト内のコードテストがなかなか終わらないので
ローカル環境でも実行できるように作成した。

## 方法
– 組み込み関数のinputを自作のinputに置き換えている。
– 複数行に対応するため、ipywidgetというモジュールを用いている。

## コード

“`python

# セル1(関数定義)
from ipywidgets import Textarea

def input():
global input_count
input_text = Input.split(‘\n’)[input_count]
input_count += 1

return input_text

def get_input(change):
global Input
Input=change[“new”]

textarea = Textarea()
textarea.observe(get_input, names=’value’)

# セル2(入力テキストボックス出力)
display(

元記事を表示

AtCoder Beginner Contest 163 参戦記

# AtCoder Beginner Contest 163 参戦記

ここ最近は上位20%近辺の常連だったが、今回は上位38.4%の位置ということで、unrated で良かった…….

## [ABC163A – Circle Pond](https://atcoder.jp/contests/abc163/tasks/abc163_a)

4分で突破. 書くだけだったけど、問題文が開始から2分以上見えなかったので時間がかかった. 円周の長さの公式くらい覚えてますよね?

“`python
from math import pi

R = int(input())

print(2 * pi * R)
“`

## [ABC163B – Homework](https://atcoder.jp/contests/abc163/tasks/abc163_b)

1分半で突破. 書くだけ. 宿題の所要日数を単純に合計して、夏休みの日数と比較するだけ.

“`python
N, M = map(int, input().split())
A = list(map(int, input

元記事を表示

OTHERカテゴリの最新記事