我正在对HTML地址进行切片以获取唯一部分并将其用作我的文件名。
这是挑战:
我正在尝试将文件名设置为:
somestring-01.pdf anotherstring-01.pdf nostring-01.pdf
由于无法知道最后一个斜杠之后和最后两个斜杠之间有多少个字符,因此我无法硬定义[-5:-10]之类的拆分。
为了能够解决这一难题,我获取文件名的伪代码如下:
在Python中:
last_slash_index = url_string.rfind("/")
int_last_slash_index = int(last_slash_index)
int_last_slash_position = len(url_string) - int(last_slash_index)
slash_count = url_string.count("/")
one_prev_slash = slash_count -1
index_one_prev_slash = url_string.find("/",one_prev_slash)
int_one_prev_slash_index = int(index_one_prev_slash)
int_one_prev_slash_position = len(url_string) -
int(int_one_prev_slash_index)
filename = url_string[-int_last_slash_position:-int_one_prev_slash_position]
如果有这种方法,我想用字符串运算符解决它,而不是深入探讨正则表达式和代码技巧,因为我现在无法处理它们。我可以学习更多方法,但是可以使用库。
您可能会猜到,我是Python的新手,只是想获取一堆字符串。
谢谢。
PS:之前发布的是相反的内容,但对于Java,没有响应:1
答案 0 :(得分:3)
您可以使用'/'
作为分隔符,从文档中使用split:
使用sep作为分隔符,返回字符串中单词的列表 字符串。
代码:
urls = ['http://www.someurl.com/folder-1/somestring/01.pdf',
'http://www.someurl.com/folders1531as12/anotherstring/183.pdf',
'http://www.someurl.com/folder-dsa990s/nostring/46798.pdf']
for url in urls:
print('{}-{}'.format(*url.split('/')[-2:]))
输出
somestring-01.pdf
anotherstring-183.pdf
nostring-46798.pdf
URL被分割后,您可以获得列表的最后两个元素,并使用format函数将它们组合在一起。
答案 1 :(得分:1)
使用拆分:
urls = [
"http://www.someurl.com/folder-1/somestring/01.pdf",
"http://www.someurl.com/folders1531as12/anotherstring/183.pdf",
"http://www.someurl.com/folder-dsa990s/nostring/46798.pdf",
]
for url in urls:
print(url.split('/')[-2])
答案 2 :(得分:0)
尝试一下:
import urllib3
url = r"http://www.someurl.com/folder-1/somestring/01.pdf"
print("-".join(urllib3.util.parse_url(url).path.split("/")[-2:]))
在网址更为复杂的情况下也可以使用
答案 3 :(得分:0)
挠了我的光头几天后,我用rsplit方法照亮了我。 代替了上面的所有算法,这可以完成所有操作:
filename = url_string.rsplit("/")[-2]
道歉,浪费大家的时间和精力。非常感谢您的评论。