2

以下のようにrfindを使用してリンクからファイル名を抽出するためにPythonを使用しています:

url = "http://www.google.com/test.php"

print url[url.rfind("/") +1 : ]

これは、末尾に / がないリンクでも問題なく機能し、"test.php" を返します。「 http://www.google.com/test.php/ 」のように / が最後に付いているリンクに遭遇しました。末尾に「/」があるとページ名を取得できません。誰か助けてもらえますか?

乾杯

4

7 に答える 7

9

おそらく次のような URL になる可能性があるため、末尾のスラッシュを削除するだけでは機能しません。

http://www.google.com/test.php?filepath=tests/hey.xml

...その場合、「hey.xml」が返されます。これを手動でチェックする代わりに、urlparseを使用してパラメーターを削除し、他の人が提案したチェックを行うことができます。

from urlparse import urlparse
url = "http://www.google.com/test.php?something=heyharr/sir/a.txt"
f = urlparse(url)[2].rstrip("/")
print f[f.rfind("/")+1:]
于 2008-10-23T11:32:46.660 に答える
4

[r]strip を使用して末尾のスラッシュを削除します。

url.rstrip('/').rsplit('/', 1)[-1]

?queries、#anchors を含む、またはパスを含まない URL など、より広い範囲の URL が可能な場合は、urlparse を使用して適切に実行してください。

path= urlparse.urlparse(url).path
return path.rstrip('/').rsplit('/', 1)[-1] or '(root path)'
于 2008-10-23T11:42:52.613 に答える
1

末尾にスラッシュが付いたファイル名は、技術的には依然としてパス定義であり、インデックス ファイルが読み取られることを示します。で終わるものを実際に持っている場合はtest.php/、エラーと見なします。いずれにせよ、コードを実行する前に、次のように末尾から / を取り除くことができます。

url = url.rstrip('/')
于 2008-10-23T11:31:12.917 に答える
0

URL を解析するurlparseというライブラリがありますが、最後の / は削除されないため、上記のいずれかが最適なオプションになります。

于 2008-10-23T11:32:14.197 に答える
0

楽しみのために、正規表現を使用できます。

import re
print re.search('/([^/]+)/?$', url).group(1)
于 2008-10-23T11:38:13.170 に答える
-1

あなたが使用することができます

print url[url.rstrip("/").rfind("/") +1 : ]
于 2008-10-23T11:28:54.670 に答える
-1
filter(None, url.split('/'))[-1]

(しかし、urlparse は、より冗長であっても、おそらくより読みやすいです。)

于 2008-10-23T13:10:34.840 に答える