LoginSignup
1
1

More than 3 years have passed since last update.

学習記録(4日目)#相対パスから絶対パスを取得する方法

Last updated at Posted at 2020-03-15

学習内容

  • 相対パスから絶対パスを取得する方法
  • Python基本文法

相対パスから絶対パスを取得する方法

HTMLでリンク先が相対パスで記述されていた際には、urllib.parse.urljon()を利用して絶対パスを取得する。

記述例
from urllib.parse import urljoin

base = "http://exsample.com/html/a.html"

compurl = lambda q: print(urljoin(base,q))
compurl("b.html")
compurl("sub/c.html")
compurl("../index.html")
compurl("../img/hoge.png")

実行結果

http://example.com/html/b.html
http://example.com/html/sub/c.html
http://example.com/index.html
http://example.com/img/hoge.png

Python基本文法

pass

Pythonではインデントによって処理ブロックを定義するので、処理を行う必要のない時には処理ブロック自体がなくなってしまう。そこで、何も処理を行うことを明示的に記述するためにpass文を用いる。

with open('exsample.txt', 'w'):
    pass

条件分岐

ifelifelseを用いて記述する。また、一つの条件式によって2通りの処理ブロックに分岐する場合は三項演算子を用いて記述することもできる。

if 条件式1:
    処理ブロック1
    # 条件式1がTrueのときに実行される処理
elif 条件式2:
    処理ブロック2
    # 条件式1がFalse、かつ条件式2がTrueのときに実行される処理
else:
    処理ブロック3
    # 条件式1がFalse、かつ条件式2がFalse、かつ条件式3がTrueのときに実行される処理

# 三項演算子による条件分岐
# 条件式がTrueのとき値1、Falseのとき値2
値1 if 条件式 else 値2

イテレータ

データを表す値そのものではなく、一連のデータを生成することができるルールとしてデータを保持する。大量のデータが必要なときには、イテレータを用いた方がメモリ効率が良い。以下にrange型のイテレータの記述例を示す。

# 以下3つのrange()は,0から9まで、1ずつ増えるイテレータを返す
range(0, 10, 1)
range(0, 10)
a = range(10)

print(a)
print(a[0])

実行結果

range(0, 10)
0

range()は、Pythonでは使うことができないインクリメント演算子(++)の機能を備えている。デクリメント(--)はreversed()というイテレータを用いて行う。

break文とcontinue

ループ文の処理ブロック内に記述することで、実行中のループ文を制御することができる。

break

現在実行中のループを中断してループの外に抜ける。

b = 0
while True:
    b += 1
    if b > 5
        break    # b = 6 となった時点でループから抜けて処理が終了する。
    print(b)

実行結果

1
2
3
4
5

continue

実行中の処理ブロックを中断して、ループの条件式評価まで処理を移動する。

c = 0
while True:
    c += 1
    if c < 5
        continue    # b = 6 となるまでこの先の処理は実行されない。
    print(c)
    break

実行結果

6

まとめ

利用しているスクレイピングに関する参考書のコードの理解に苦労し始めたので、再びPythonの基礎文法についての学習を始めることにした。CJavaでは非常に便利だったインクリメント・デクリメントが使えないことには驚いたが、累算代入(+=, -=)やイテレータを用いてうまく対応していけるようにしたい。

参考書

参考にした書籍から公開されているGitHubを添付しておきます。
増補改訂Pythonによるスクレイピング&機械学習 開発テクニック

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1