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

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

Scrapy 各種コマンド

### モジュール作成

“`
scrapy genspider [モジュール名] [サイトドメイン]

例)
scrapy genspider hoge wwww.hoge.com
“`

### モジュール実行コマンド

“`
scrapy crawl [モジュール名]

例)
scrapy crawl hoge
“`

### 実行結果の出力ファイル指定

“`
scrapy crawl hoge -o /home/fuga.csv
“`

### デバッグコマンド

“`
scrapy shell [対象URL]

例)
scrapy shell ‘https://www.hoge.com/’

インタラクティブモードになる
以下を入力していく

>>>
import re
import mojimoji
from bs4 import BeautifulSoup
from urllib.request import urlopen

soup = BeautifulSoup(response.body, “html5lib”)

soup
↑ 取得結果が表示さ

元記事を表示

julia v1.3から始めるJupyter Notebook

[前回](https://qiita.com/doorei/items/91a52a31f917b9d7bb84)、juliaをインストールしたPCが不調になり、新型PCを導入したのでJuliaをインストールしようとしたらjuliaのバージョンが上がっていて少しだけ前回通りではいかなかったので再度書いてみる。

# やってみた環境
– Windows 10 Home (64bit) Ver 1909
– julia v1.3 (64bit)

# やり方
0. juliaがインストール済みの前提
1. juliaのコンソールを起動(緑字のプロンプト)
2. `]`キーを押してパッケージモードへ(青字のプロンプトになる)
3. `add IJulia`を実行(Cloning~となり、しばらく時間がかかる)
4. `build IJulia`を実行(Building~となり、しばらく時間がかかる)
5. バックスペースでパッケージモードを抜ける(緑字のプロンプト)
6. `using IJulia`を実行(Precompilingされる)
7. `notebook(detached=t

元記事を表示

Windows環境でpythonを動かす

windows 10環境でpythonを触りたくなったので手順をまとめておく。

## 環境

Windows 10
python 3.8.2

## pythonをダウンロードしてインストール

下記のサイトより最新版の3.8.2をダウンロード
https://www.python.org/downloads/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/272635/b92dfb61-d5a3-08e1-c0cf-8b48dcac4ac6.png)

ダウンロードしパッケージ実行
このときに[Add Python 3.8 to PATH]にチェックをし、Install nowをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/272635/f16048f5-df06-0c51-9f3b-01c31df0d827.png)

完了するとこちらの画面が表示されます。
![i

元記事を表示

ABC158 D問題を素人知識で解く

#はじめに
初めてのコンテストABC158後、D問題がどうしても解けず「ぐぬぬ…」って感じでしたが
なんとかAC出たのでそのまとめです。
あとQiitaの記事中にソースコード描いてみたかったので( ´艸`)

#本番中にD問題で躓いたとこ
とにかくTLE(実行時間超過)が問題でした。
問題文中にあるテストケースでは通過するも、提出後の判定では…(TдT)

本番後1日経過し、おそらく様々なエレガントな解法が上がる中
***謎の負けず嫌いを発揮し、ごり押しで解くことを決意。***(1日かかりました(汗))

D問題へのリンクは[こちら](https://atcoder.jp/contests/abc158/tasks/abc158_d)

#まず考えたこと
Twitterで「文字列の結合って時間かかるよ」的なニュアンスのツイートを見かけて、藁にも縋る思いでPythonのライブラリを確認したり検索して調べてみました。

##判明したこと
どうやら、Pythonにはミュータブルとイミュータブルというものがあるらしく
***文字列はイミュータブル***であり、下のようなコードだとオブジェクトを

元記事を表示

AtCoder 日立製作所 社会システム事業部 プログラミングコンテスト2020 参戦記

# AtCoder 日立製作所 社会システム事業部 プログラミングコンテスト2020 参戦記

## hitachi2020A – Hitachi String

3分で突破. どう書くのが楽か戸惑ったけど、長さが10までなので、ありえる解答総当りが一番速いかとこうなった.

“`python
S = input()

for i in range(1, 6):
if S == ‘hi’ * i:
print(‘Yes’)
exit()
print(‘No’)
“`

## hitachi2020B – Nice Shopping

8分で突破. B問題だから総当たりでいいかと思ったら、制限を見るに無理. ちょっと考えたけど、割引券が無ければ最小金額は min(a) + min(b) に決まってるので、後は割引券だけ総当りすればいいやとこうなった.

“`python
A, B, M = map(int, input().split())
a = list(map(int, input().split()))
b = list(map(in

元記事を表示

Pythonで日立製作所 社会システム事業部 プログラミングコンテスト2020を解きたかった

### はじめに
こんばんは、tax_freeです。前回のABC(ABC157,158)は忘れていて参加できませんでした。もったいない。
今回は、ARC相当のコンテストでした。私は、A,Bの二つしか解けませんでした。とても悔しい。

###A問題
[問題](https://atcoder.jp/contests/hitachi2020/tasks/hitachi2020_a)

**考えたこと**
最初は問題文を読み間違えていて3WAも出してしまいました。今回の敗因はここ。
問題文の**’hii’はhitachi文字列ではありません**を完全に読み落していました。
最初は、’hi’が含まれていればよいと思ったので

“`
‘hi’ in [文字列]
“`
でif文にかけていました。
それだけでは、’hii’に対応できないので改善しました。

“`python
s = str(input())

checker = True
if ‘hi’ not in s:
checker =False

while ‘hi’ in s:
s = s.replace(‘hi’,’

元記事を表示

egaoスクールフォトサービスの写真をpython baseで一括ダウンロードする手順

# 背景 (Situation & Task)

子供を保育園にあずけていると写真を保育園のスタッフが撮影をしてくれていることがある。

こういった写真について、共有される方法はいくつかあり、その中の一つの方法として、「egaoスクールフォトサービス」というものがある。スタジオアリスのサービスなのだが、我が子の写真を選んで購入し、後日ウェブからダウンロードできるなかなか優れたシステムだと思う。

![ホームページ___egao_スクールフォトサービス.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/115038/951ec5f9-bb85-743b-b405-0d65b9f85ed4.jpeg)
https://egao.photo/store/

しかしながら、たいていの親は、あれよあれよとたくさん写真を選ぶ訳だが(我が家は百枚を超えた)、なんとこのウェブサービス、一括ダウンロードのオプションがない。一つずつクリックしてるとだんだんどれがなんだかわからなくなってくる。。。。恐ろしい。。。。

きっ

元記事を表示

【Python】Python版lodashのpydashを試してみる

# Python版lodashのpydashを試してみる
## TL;DR
会社ではフロントサイドをReact、バックエンドでDjangoで開発してるんですね。
フロントサイドでは`lodash`というライブラリーをよく利用するんですが、めちゃくちゃく便利で、そのあとPythonを書くときに、`lodash`がないため、もどかしさを感じることがあります。
そんなもどかしさに苛まれているある日`pydash`というPython版`lodash`とも言えるlibraryを見つけたので紹介します。

## インストール
利用できるPtyhonのバージョンは2.6以上、または3.3以上とのことなので、適当にPython 3.7.6で試すことにします。

“`shell
$ pip install pydash
“`

## 軽く触ってみる

“`python
>>> import pydash
>>> from pydash import flatten

# Arrays
>>> flatten([1, 2, [3, [4, 5, [6, 7]]]])
[1, 2, 3, [4, 5,

元記事を表示

blueqatでゲート図書けるようになったみたい

blueqatで量子ゲートを描画している感じのツイートがあったので検証してみました。

# 環境準備
環境の準備は以下のコマンドを打つだけ。

“`
pip install blueqat obaq
“`

# 実際に動かしてみた
コードは以下の通りです。

“`python
#ライブラリインポート
import obaq
from blueqat import Circuit

#量子ゲート定義
c = Circuit(1).h[0].m[:]
#量子ゲート描画
c.run(backend=”obaq”, returns=”draw”)
“`
今回は量子ビットを1つ用意して、アダマールゲートを作用させて観測するという回路を作りました。実行結果は以下の通りです。
obaq-sample1.JPG

おー、

元記事を表示

RabbitMqを使用するメリットと例

# はじめに
[前々回](https://qiita.com/mink0212/items/8d692e17b34793655c66)、[前回](https://qiita.com/mink0212/items/90d5a9da06ff58fdb629)でRabbitMqの使い方をまとめました。今度はもう少し範囲を広げてプロデューサーとコンシューマの関係からRabbitMqの使い方を調べたので、メリットを簡単な例と一緒にまとめます。

# 環境
– python:3.6.5
– Java:11.0.5
– イメージ:rabbitmq:3-management

# RabbitMqを使用するメリット
– キューのメッセージをためて順次実行できる
– プロデューサ・コンシューマの追加が容易
– プロデューサ・コンシューマの追加が任意のタイミングで可能
– メッセージの振り分けを分散可能

# キューのメッセージをためて順次実行できる
プロデューサーから送信されたメッセージをキューにためて、その順にコンシューマが受信して処理を実行する。

## シチュエーション例

元記事を表示

Pythonのデコレータに型ヒントをつけたいか?

A. はい。

“`python
from functools import wraps
from typing import Any, Callable, TypeVar, cast

FuncType = TypeVar(“FuncType”, bound=Callable[…, Any])

def print_funcname(func: FuncType) -> FuncType:
@wraps(func)
def wrapper():
print(“関数名:”, func.__name__)
func()
return cast(FuncType, wrapper)

@print_funcname
def hello():
print(“Hello!”)
“`

元記事を表示

pandas.Series.strで遊んでみた

# はじめに

– ウェブサイトのアクセス解析をしていると、ブラウザやOSのバージョンが“68.0.3440“, “8.0“, “18.0.1025“などとなっていることが分かった
– この“文字列“のままだと、バージョン順に並べることが難しい
– “major.minor“が分かればOKなので、“pandas.Series.str“で遊んでみた

## STEP1:バージョンをそのまま出力して確認

– まず確認

“`python
df[‘browser_version’]
0 NaN
1 68.0.3440
2 18.0.1025
3 38.0.1025
4 NaN
Name: browser_version, dtype: object
“`

## STEP2:ピリオド“.“で分割する

– [pandas.Series.str.split](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.s

元記事を表示

AtCoder ABC 158 の復習

# 本ページについて
2020年3月7日に開催されたABC 158 の復習メモです。
できそうでできなかった問題Dについて振り返ります。

# 結果
問題A,B,CがACになり、問題DはWAでした。

# 問題Dについて
https://atcoder.jp/contests/abc158/tasks/abc158_d

# 自分が書いたコードと振り返り
## コードその1
下記のコードはWAでした

“`
s = input()
q_number = int(input())
reverse_flag = 1
for i in range(q_number):
temp = input().split()
if temp[0] == “1”:
reverse_flag = reverse_flag * -1
else:
if int(temp[1])*reverse_flag == 1 or -2:
s = temp[2] + s
else:
s = s + temp[2]

if reverse

元記事を表示

pythonのforの改行を削除する

pythonでスクレイピングプログラムを書いている際に`.txt`ファイルから文字を読み込みたい際につまずいた点があったので残します

“`sample.txt
soccer
baseball
word
excel
point
address
japan
amazon
mac
apple
iphone
starbucks
“`

このような`.txt`ファイルがあったとします

“`sample.py
with open(‘word.txt’, encoding=’shift_jis’) as keywords:
for keyword in keywords:
print(keyword)
“`

このような形でキーワードの読み込みを行い出力をした際に当然上記のファイルのような出力結果を期待していたのですが

“`
soccer

baseball

word

excel

point

address

japan

amazon

mac

apple

iphone

starbucks
“`

このような形で出力されていました。中に改行文

元記事を表示

RasberryPi4でアナログ信号を計測しPythonでcsvに保存するソフト

RaspberryPiを使ってソーラーパネルの発電量を一定間隔で読み込み、プログラム終了後、発電量のデータをcsvファイルに保存するプログラムを作成してみました。

将来的には、オフグリッドで一番効率の良い方向にソーラーパネルをコントロールさせたいと考えています。

RaspberryPi4とソーラーパネルとADコンバータMCP3002の回路図については後日追加します。

~~~python
import wiringpi # GPIOを制御するライブラリ
import time # タイマーのライブラリ
import datetime # 現在日時を取得する
import pandas as pd
import csv
~~~

発電量と、発電量を測定した時間を保存するデータフレームを作ります。
1列目にTime、2列目にvoltというタイトルを付けます。

~~~python
list_df = pd.DataFrame( columns=[‘Time’,’volt’] )
~~~

~~~python

元記事を表示

[Python3 / mplfinance] mpl-financeからmplfinanceへの移行(新機能は一切使わないver)

# 概要

タイトルを見て「え?何言ってんの?」と思った方も多いと思います。
「たいぽ?」って言われてもおかしくないようなタイトルです。

ですが、[matplotlib/mpl-finance](https://github.com/matplotlib/mpl-finance)は **DEPRECATED** とされ、[matplotlib/mplfinance](https://github.com/matplotlib/mplfinance)へと移行されました。
ハイフンが消えましたw(わかりにくい>д<) というわけで、とりあえず昔のmpl-financeをやめて新しいmplfinanceに切り替えて、なおかつ昔の処理をそのまま生かす方法を書いてみます。 ちなみに、Githubには**New mplfinance package (to replace mpl-finance by mid 2020).** と書かれていたので、そのうちmpl-financeはなくなるんだと思います>_<; # 実施内容 ## 1. pip install Githubにも書いてある

元記事を表示

django-admin startprojectで「コマンドが見つかりません」の対処法

#初めに
Django-admin startprojectで表題のエラーで苦戦したため、その備忘録を残しておきます。経験はまだまだ浅いため、間違っていたらごめんなさい。

#環境
– MacOS 10.15
– python3.7
– Django3.0

#対処法
“`
$ python3 -m Django-admin startproject mysite
“`
パスを通してないとできないかもです。
「python3」、自分の環境に合わせて「python」とかに変えてください。
特に何もしてないと、python→Python2系、python3→Python3系だと思います。
たぶん公式のコマンドのままだとPython2系を使ってるのかな?
以下に問題解決の時に参考にしたページを載せています。

Django公式トラブルシューティング:
[https://docs.djangoproject.com/ja/3.0/faq/troubleshooting/](https://docs.djangoproject.com/ja/3.0/faq/troubleshooting/)

元記事を表示

Pythonで用例ベースの対話システムをつくる

#概要
対話システムとは、コンピュータが人間と会話することを目的としたシステムです。
コンピュータ側が入力文に対してどのように応答文を決定するかには様々な手法がありますが、その一つに用例ベースの手法があります。

用例ベースの手法ではあらかじめ対話データとして、入力文と応答文のペアをいくつか用意します。ユーザからの入力文と最も類似する対話データ中の入力文を求め、そのペアに当たる応答文を返すという仕組みです。

#つくるもの
以下の画像のようなものです。
sample1.png
プログラムの手順としては、
1.対話データを用意する。
2.ユーザから入力文を受け取る。
3.ユーザからの入力文と対話データ中の各入力文の類似度を計算。
4.最も類似する対話データ中の入力文のペアとなる応答文を出力。
5.2~4をグルグル回し

元記事を表示

競プロ私的チート(および反省)シート(Python3)

雑記です。ググっても見つかりづらく、かつ自分がつまづいたことを付記していきます。ある程度たまったらジャンル別にまとめます。

一部をPyCharmのLive Templates(スニペット)に保存し、[リンク](https://github.com/Fukucchi/Live_Templates_python3)で公開しています。
# 累積和
Live Templatesでは`cum`で呼び出せる。
・[A – Abundant Resources](https://atcoder.jp/contests/nikkei2019-final/tasks/nikkei2019_final_a)

“`python
from itertools import accumulate

N = int(input()) # len(A)
A = list(map(int, input().split()))

B = [0] + A
B = list(accumulate(B)) # 累積和を格納したリスト作成

# この問題は長さが1-Nの連続部分の和の最大値を出せというものなので以下の

元記事を表示

ArgumentParserで日付型(datetime)を受け取る【python】

# はじめに

pythonのオプション引数で、datetime.date型の値を受け取る方法の忘備録です。

## やりたいこと
– オプション引数で日付を表す文字列(例:`2020-01-01`)を受け取り、datetime.date型に変換する。
– 不正な形式の文字列が渡された場合に、オリジナルのエラーメッセージを出す。

# ArgumentParserでdatetimeの型指定をする

Argparseの基本的な使い方については [公式チュートリアル](https://docs.python.org/ja/3/howto/argparse.html) が参考になりました。
チュートリアルではint型の型指定をしていますが、今回指定したいのはdatetime.date型です。

日付を表す文字列(例:`2020-01-01`)をdateオブジェクトに変換する関数`date_type`を定義し、ArgumentParserのtypeに指定します。

“`python:test.py
import argparse
import datetime

# str -> date

元記事を表示

OTHERカテゴリの最新記事