回答編集履歴

1

正規表現での方法

2020/05/03 00:18

投稿

glyzinieh
glyzinieh

スコア222

test CHANGED
@@ -41,3 +41,51 @@
41
41
  正規表現を使ってもできますが、モジュールをimportしなければいけないことなど、少し面倒なところがあると思ったので、inを使いました。
42
42
 
43
43
  正規表現の方が良い場合は、コメントいただければ幸いです。
44
+
45
+
46
+
47
+ ### 正規表現の方法(追記1)
48
+
49
+ ```Python
50
+
51
+ import os
52
+
53
+ import re
54
+
55
+ 省略
56
+
57
+ for i in range(len(tags)):
58
+
59
+ filepath = "{}.pdf".format(i)
60
+
61
+ target = tags[i]["href"]
62
+
63
+ if re.match(r'J_TrafficReport_(.+).pdf',os.path.basename(target)):
64
+
65
+ url_1 = urljoin(base, target)
66
+
67
+ request = urllib.request.Request(url=url_1, headers=headers)
68
+
69
+ with open(filepath, "wb") as f:
70
+
71
+ f.write(urllib.request.urlopen(request).read())
72
+
73
+ ```
74
+
75
+ #### 参考にさせていただいたサイト
76
+
77
+ [Pythonでパス文字列からファイル名・フォルダ名・拡張子を取得、結合](https://note.nkmk.me/python-os-basename-dirname-split-splitext/)
78
+
79
+ > ファイル名を取得: os.path.basename()
80
+
81
+ パス文字列からファイル名を取得するにはos.path.basename()を使う。
82
+
83
+
84
+
85
+ [書きながら覚えよう!Pythonで正規表現を使う方法【初心者向け】](https://techacademy.jp/magazine/15635)
86
+
87
+ [Pythonの正規表現マッチオブジェクトでマッチした文字列や位置を取得](https://note.nkmk.me/python-re-match-object-span-group/)
88
+
89
+ > ブール値としての扱い(if文での使い方)
90
+
91
+ マッチオブジェクトはブール値として判定される場合は常にTrueとして扱われる。