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

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

Windows上でのWebスクレピング環境構築(Selenium)

#1. 本文の目的

Webスクレイピングの技術を勉強して、各種タスクを自動化してみたい。
Windows上でSeleniumを使用したWebスクレイピングの環境構築方法を記載する。

#2. 方法

##2-1 環境

OS : Windows10

##2-2 Jupyter環境の準備

Jyupterをインストールします。インストール手順は[こちら](https://qiita.com/STInverSpinel/items/9801f30c2fd1a378518d)

インストール完了後、適当な場所にworkディレクトリ(例:C:/Users/xxxx/Desktop/work/)を作成する。Jupyterを起動し空のシートをworkingディレクトリに作成する。

##2-3 geckodriverドライバーインストール

geckodriverの取得が必要です。[こちら](https://github.com/mozilla/geckodriver/releases/tag/v0.19.0)からwindows版をダウンロードします。
![17.JPG](https:/

元記事を表示

Pythonで「ケツマイモ」と標準出力する方法

* Python3系

“`{python3}
print(‘ケツマイモ’)
“`

Python3ではデフォルトでUTF-8をサポートしているのでそのまま「ケツマイモ」を出力します。

* Python2系

“`{python}
print u’ケツマイモ’
“`

“`{python}
print ‘ケツマイモ’.encode(‘utf-8’)
“`

“`{python}
# -*- coding: utf-8 -*-
print ‘ケツマイモ’
“`

Python2系では文字列にバイト文字列とユニコード文字列の二種類があり、デフォルトでASCIIをサポートするため、バイト文字列が出力されてしまいます。
「ケツマイモ」のようなマルチバイトなユニコード文字列を表示するためには、バイト文字列をユニコード文字列に変換する必要があります。

元記事を表示

どこかで見たことのあるpython3の内包表記(List、辞書)

# はじめに

pythonのお勉強がてらの自分メモです
サンプルソースの動作確認は「Google Colaboratory」でやってます。

## Listの内包表記
### for文でリスト作成

“`python3:test.py
list = []

for i in range(5):
list.append(x)
print(list)

# => [0, 1, 2, 3, 4]
“`

### 内包表記でリスト作成

“`python3:test.py
list = [i for i in range(5)]
print(list)

# => [0, 1, 2, 3, 4]
“`

### なんとif文も使える

“`python3:test.py
# 【for文】偶数だけListに入れる
list = []
for i in range(10):
if i % 2 == 0:
list.append(i)
print(list)
# => [0, 2, 4, 6, 8]

# 【内包表記】偶数だけListに入れる
li

元記事を表示

【Python】マルチプロセス(multiprocessing)時の値の受け渡し

Pythonマルチプロセス間で変数を受け渡しするときに値が渡せなかったのでメモを残す

# 実装
4つの関数(f1,f2,f3,f4)を定義し、各関数を別プロセスで実行する。各関数では値の追加(append)を行い、最後メインプロセスから追加された値を確認する。

### NG

変数を格納するために定義したtestlistは、メインプロセスにのみ存在するメモリ空間のため, 別プロセスからは参照更新が不可能な様子

– プログラム

“`Python
from multiprocessing import Process
from multiprocessing import Manager

testlist=[]
def f1():
#print(“function f1”)
testlist.append(“f1”)

def f2():
#print(“function f2”)
testlist.append(“f2”)

def f3():
#print(“function f3”)
testlist.append

元記事を表示

yukicoder No.977 アリス仕掛けの摩天楼

# yukicoder No.977 アリス仕掛けの摩天楼

まず、Alice 攻撃前の時点ですべての島が繋がっていたら Bob の勝ちです. Alice が爆破した橋を作り直せばいいのですから. 逆に島が3グループ以上になっていたら、Alice の勝ちです. Alice が何もしなくても、橋を1つ掛けるだけでは連結状態になりません. 勝負が分かれるのが、島が2グループに分かれていた場合で、Alice の爆破で3グループに変化すれば Alice の勝ちです. 橋が一本でしか繋がっていない島はその橋を爆破されると別グループになってしまうので、そういう島があるかをチェックすれば解答できます.

島が何グループかは Union Find で簡単にわかります. 島に何本橋がかかっているかは素直に集計すればよいです.

“`python
from sys import setrecursionlimit

def find(parent, i):
t = parent[i]
if t < 0: return i t = find(parent, t)

元記事を表示

【機械学習】自作データセットで転移学習を行い機械学習モデルを作る

##1.はじめに
これまでの記事(スクレイピング編,OpenCVでの画像処理編)で自作データセットの作成方法を紹介しました。
本記事では、作成したデータセットを用いて、転移学習を行い日本人と外国人を判断する機械学習モデルの作成方法を紹介したいと思います。

##2.今回やりたいこと
機械学習モデルの作成に必要なデータセットを用意する ←前回までの内容

———-ここから本記事でやること———-

転移学習を利用して、機械学習モデルを作る。

機械学習モデルを使って、日本人と外国人の写真を判断する。

##3.転移学習とは
転移学習とは一言で表すと、短時間で機械学習モデルの性能を上げるために用いられるモデルの学習方法のことです。
機械学習モデルの性能(精度)は一般

元記事を表示

[Python3 入門 21日目]10章 システム(10.1〜10.5)

#10.1 ファイル
##10.1.1 open()による作成

– open()関数はファイルを開くだけでなく、存在しないファイルを要求したときは新しいファイルが作られる。

“`py

>>> fout=open(“oops.txt”,”wt”)
>>> print(“Oops,I created a file.”,file=fout)
>>> fout.close()

“`

##10.1.2 exists()によるファイルが存在することのチェック

“`py

>>> import os
>>> os.path.exists(“oops.txt”)
True
>>> os.path.exists(“./oops.txt”)
True
>>> os.path.exists(“aaa.txt”)
False
>>> os.path.exists(“.”)
True
>>> os.path.exists(“..”)
True

“`

##10.1.3 isfile()によるファイルタイプのチェック

“`py

>>> name=”oops.txt”
>>> os.pa

元記事を表示

Re:ゼロから始める競技プログラミング生活 第1章3『されど茶』

##学習報告
ABC154参加する気満々だったのに今週なかったorz
なので今回も過去問解いていきます!!

前回はB問題を解いて、次はいよいよC問題だったのですが思いの外難しく、ここ5日間ほどは数をこなそうとA-Cまでの問題をひたすら解いていました。

その途中で問題の難易度によって色が付いていることに気がつきました(遅い)。
ACもらえて喜んでいた問題も色を見れば灰()

つまり、今の自分の実力は灰色…

なら解いてやろう、茶の問題を!!!!

##茶に挑戦
というわけで、今回解いていく問題がこちら
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/570839/e21666ea-afc6-39fd-1d90-4111f570c288.png)

これが茶…指が動かない。
とりあえず出力例を見てみよう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/570839/c2bdac47-

元記事を表示

no lapack/blas resources found @ raspberry pi model b+

## 環境
Raspberry Pi model b+
Raspbian
Python 3.6

## 起こったこと
scipy を pip でインストールしようとしていたら、
`no lapack/blas resources found`
というエラーが出てきた。
これは、
`sudo apt install liblapack-dev`
を実行すれば問題ない

元記事を表示

TensorflowのモデルをLiteへ変換する方法

#TensorflowLiteについて
スマートフォンや、埋め込みデバイス用の機械学習ツールセットです!
Tensorflowよりも軽量です。

#変換方法について
PCに、PythonとTensorflow(pip)がインストールされていることを前提とします。
まず、変換するモデルを用意します。

##python上で変換
####サンプル

“`python
import tensorflow as tf

converter = tf.lite.TFLiteConverter.from_saved_model(“test_model.pb”)
tflite_model = converter.convert()
open(“test_model.tflite”, “wb”).write(tflite_model)
“`

####使い方

“`python
import tensorflow as tf

converter = tf.lite.TFLiteConverter.from_saved_model(“モデルへの相対パス”)
tflite_model = conv

元記事を表示

Pythonのエラーメッセージは具体的でわかりやすい(その前に、コロン(:)とセミコロン(;))

#目的
何かと比較できるほどの経験が乏しいですが、
**Pythonのエラーメッセージは具体的でわかりやすい**
と感じています。
よって、エラーは、ぱっと見るだけでなく、
記載内容をまじめに読むことが、
エラー解決の近道である気がしています。

そんな気持ちを示すための記事です。

## その前に、コロン(:)とセミコロン(;)
補足の**その前に、コロン(:)とセミコロン(;)**の意味は、
エラーメッセージによく登場するコロンの意味を示すことが目的です。
セミコロンは、比較のため。

#コロン(:)とセミコロン(;)の違い

コロンとセミコロンの違いとして、
以下のサイトの記載を参考にしました。
以下のサイトによると
(「;」セミコロンと「:」コロンの違いとは?それぞれの意味と使い方)
https://allabout.co.jp/gm/gc/471930/

コロン(:)は、

>コロンの意味は「つまり」、「例を挙げれば」です。

例文も同じサイトから引用いたします。

>I like Japanese foods: sushi, tempura, and sukiyaki.

元記事を表示

Pythonのエラーメッセージは具体的でわかりやすい(… AAA yyy BBB)

#目的
何かと比較できるほどの経験が乏しいですが、
**Pythonのエラーメッセージは具体的でわかりやすい**
と感じています。
よって、エラーは、ぱっと見るだけでなく、
記載内容をまじめに読むことが、
エラー解決の近道である気がしています。

そんな気持ちを示すための記事です。

## … AAA yyy BBB
補足の**… AAA yyy BBB**の意味は、エラーを発生させる要素の順番がまじめに表示
されるという意味で書きました。

あとで示しますが、単純に、

“`
TypeError: unsupported operand type(s) for *: ‘generator’ and ‘float’
“`

みたいな表示のこと(後半部)を指してます。

#エラーメッセージの例

ここで示すコードは、エラーメッセージを出すためのコードで、
全く同じような間違いをする可能性があるコードではありません。
繰り返します。エラーメッセージを出さすためのコードです。
(ただし、もう少し、ややこしいコードで、同じエラーが出ているのをみたことはあります。)

## エ

元記事を表示

円周率を1億桁求めてみた

# どうやって?
“`math
\zeta(2) = \sum_{n=1}^{\infty}\frac{1}{n^2} = \frac{\pi^2}{6}
“`
([バーゼル問題](https://ja.wikipedia.org/wiki/%E3%83%90%E3%83%BC%E3%82%BC%E3%83%AB%E5%95%8F%E9%A1%8C))

この式を利用すると$\pi$の近似値を求めることができます。

   1 1からある$1$以上の整数を$a$として$\sum_{n=1}^{a}\frac{1}{n^2}$を求める
   2. 1で求めた答えを$\times6$する
   3. 2で求めたこたえの平方根を計算する。この値が$\pi$の近似値となる。

ということでpythonで実装してみました。コードは省略します。

***

ということで計算すること数時間…
一向に終わる気配がない…
時間を計算してみると18時間ほどかかるそうです。しかもあまり正確じゃない…
しかも収束しにく

元記事を表示

実験データのカラー2D分布図の作り方

実験やフィールドワークで得た、2D座標(x,y)とdataの組から
2D分布図をつくりたい。

#### サンプルデータ
“`python3.6.py
import numpy as np

n = 100 # 100ポイントのデータ
x = np.random.rand(n) # x座標
y = np.random.rand(n) # y座標
data = np.sin( x * np.pi + y * np.pi) # 例えばsinデータとします
“`

|x|y|data|
|:———–:|:————:|:————:|
|0.414107| 0.258962| 0.855795|
|0.746765| 0.106237| 0.445567|
|0.886290| 0.200612| -0.269632|
|…|…|…
このようなデータとします。
格子点上のデータでもよい

#### 散布図を使った

元記事を表示

jupyter notebook のホームディレクトリを変更する方法

jupyter-notebookでホームディレクトリから上階層にディレクトリ変更できなく困ったので、ホームディレクトリを一時的に変更したい時に。

###解決法
“`cmd:Anaconda Prompt (Anaconda3)
(base)***>jupyter notebook –notebook-dir=<ホームフォルダ>

例 Zドライブのトップフォルダをホームディレクトリにする
(base)***>jupyter notebook –notebook-dir=Z:\
“`
#### 参考
[Jupyter Notebookの初期ディレクトリを変更する](https://qiita.com/mitama/items/a8129e50afcc462e02d6)
[Jupyter Notebookを開くいてでてくるフォルダ一覧について]
(https://teratail.com/questions/61876)

#### あとがき
普通にjupyter notebook -h で詳細よめます。
上階層にcdできる方法あったら教えてください。

元記事を表示

[Python3 入門 20日目]9章 ウェブを解きほぐす(9.1〜9.4)

#9.1 ウェブクライアント

– ウェブはクライアントサーバーシステムになっている。クライアント→サーバーに**要求**。サーバー→クライアントには、TCP/IP接続を開設し、HTTPを介してURLその他の情報を送り、**応答**を受け取る。
– 応答にはステータス、応答データと形式がある。
– 最もよく知られたウェブクライアントはウェブブラウザである。様々な方法でHTTP要求を送ることができる。

– 個々のHTTP接続は他の接続に依存せず、独立している。(ステートレス)→HTTPの代わりに状態を管理する方法としてクッキーが使われる。
– サーバーがクライアント固有情報をクッキーに収めてクライアントに送る。→クライアントはサーバーにクッキーを送り返すと、サーバーはクッキーからクライアントを一意に識別する。

##9.1.1 Pythonの標準ウェブライブラリ
Python2ではウェブクライアントとサーバーモジュールはあまり纏まっていなかった。→Python3ではパッケージにまとめた。

– httpはクライアントサーバーHTTPの詳細を管理する。
– clientはクライア

元記事を表示

webスクレイピング(試作品)

#はじめに
今回は、pythonでスクレイピングを作成してみました。
キレイにcsvへ書き込みたかったのですが、技術不足でとりあえず書き込んだだけになってしまったので見やすくできるように改良していきたいと思っています。
手探り状態で作成していたので動きはするものの、変えた方がいい所などがあればコメント頂けると幸いです。
#環境
windows 10
python 3.8.0
__ライブラリ__
urllib.request #URLにアクセスするために必要。
csv #csvファイルを操作する際に必要。
BeautifulSoup #HTMLやXMLドキュメントを解析するために必要、スクレイピングに特化したモジュール。
datetime #日付の取得に必要。
※いつとってきたものなのかが、一目でわかりやすいと思ったので今回入れてみました。
– – –
##コード
“`scraping.py
import urllib.request
import csv
from bs4 import BeautifulSoup
import datetime

#サイトのURL
url = “ス

元記事を表示

VOICEROID2で自動読読み上げ&保存させてみた2

##はじめに
[前回の記事]
(https://qiita.com/tkmktdm/items/6f8e363858f4061d8cfd)を参照していただけるとわかる通り、前回は、自動保存する際に同一ファイルに保存するだけでした。しかしhtmlファイルを書いてjavascriptで音声ファイルを読み込ませてみた結果新しく開きなおすか、別ファイルを読み込まないとダメ?見たいでした。(詳しくは分かりません笑)

##具体的に
前回作ったmainプログラムファイルに、グローバル変数を用意して送信される数をカウントする。

名前を付けて保存のところで名前を付ける欄 [コンボボックス] を、Inspectツールを使って探して場所を探します。そして、mainで用意したグローバル変数をそこに入れて、別の名前つけるという構造になっています。

##メイン画面
“`aitalk.py
import wave
import winsound as ws
import tkinter
import sys
import tkinter.messagebox as tkm
import time
from

元記事を表示

クラスの継承とsuper関数

“`py:
class Car(object):
def __init__(self, model=None):
self.model = model
def run(self):
print(‘run’)

class ToyotaCar(Car):
def run(self):
print(‘run fast’)

class TeslaCar(Car):
def __init__(self, model=’Model A’, enable_auto_run=False):
super().__init__(model)
self.enable_auto_run = enable_auto_run
def run(self):
print(‘run very fast’)
def auto_run(self):
print(‘auto run’)

car = Car()
car.run()

print(‘#######

元記事を表示

Raspberry Pi4上でのWebスクレピング環境構築

#1. 目的

SeleniumによるWebスレイピングの環境を作る。

#2.作業
##2-1 Jupyterのインストール

jyupterのインストール手順は[こちら](https://qiita.com/iton/items/1bd670bc84f264024d5d)。
インストールが完了すれば、jupyterを立ち上げる。

“`console
pi@raspberrypi:~ $ jupyter notebook //jupyterを立ち上げる。
“`
##2-2 SeleniumとChromiumドライバのインストール

“`console
pi@raspberrypi:~ $ sudo apt-get install chromium-chromedriver #chromium-chromedriverのインストールを実施する。
pi@raspberrypi:~ $ chromedriver –version #正しくインストールできたか確認
ChromeDriver 78.0.3904.108 (4b26898a39ee037623a72fcfb7727

元記事を表示

OTHERカテゴリの最新記事