teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

正規表現での方法

2020/05/03 00:18

投稿

glyzinieh
glyzinieh

スコア222

answer CHANGED
@@ -19,4 +19,28 @@
19
19
  大文字小文字は区別される(以降で説明する文字列のメソッドでも同様)。
20
20
 
21
21
  正規表現を使ってもできますが、モジュールをimportしなければいけないことなど、少し面倒なところがあると思ったので、inを使いました。
22
- 正規表現の方が良い場合は、コメントいただければ幸いです。
22
+ 正規表現の方が良い場合は、コメントいただければ幸いです。
23
+
24
+ ### 正規表現の方法(追記1)
25
+ ```Python
26
+ import os
27
+ import re
28
+ 省略
29
+ for i in range(len(tags)):
30
+ filepath = "{}.pdf".format(i)
31
+ target = tags[i]["href"]
32
+ if re.match(r'J_TrafficReport_(.+).pdf',os.path.basename(target)):
33
+ url_1 = urljoin(base, target)
34
+ request = urllib.request.Request(url=url_1, headers=headers)
35
+ with open(filepath, "wb") as f:
36
+ f.write(urllib.request.urlopen(request).read())
37
+ ```
38
+ #### 参考にさせていただいたサイト
39
+ [Pythonでパス文字列からファイル名・フォルダ名・拡張子を取得、結合](https://note.nkmk.me/python-os-basename-dirname-split-splitext/)
40
+ > ファイル名を取得: os.path.basename()
41
+ パス文字列からファイル名を取得するにはos.path.basename()を使う。
42
+
43
+ [書きながら覚えよう!Pythonで正規表現を使う方法【初心者向け】](https://techacademy.jp/magazine/15635)
44
+ [Pythonの正規表現マッチオブジェクトでマッチした文字列や位置を取得](https://note.nkmk.me/python-re-match-object-span-group/)
45
+ > ブール値としての扱い(if文での使い方)
46
+ マッチオブジェクトはブール値として判定される場合は常にTrueとして扱われる。