在Python的网址中获取最后两个斜杠位置之间的字符串

时间:2018-09-29 18:35:46

标签: python string

我正在对HTML地址进行切片以获取唯一部分并将其用作我的文件名。

这是挑战:

我正在尝试将文件名设置为:

somestring-01.pdf  
anotherstring-01.pdf  
nostring-01.pdf  

由于无法知道最后一个斜杠之后和最后两个斜杠之间有多少个字符,因此我无法硬定义[-5:-10]之类的拆分。

为了能够解决这一难题,我获取文件名的伪代码如下:

  • 找到最后一个字符串的索引[int_last_slash_index]
  • 找到上一个字符串的索引[int_prev_slash_index]
    第1步:计算字符串中的斜杠数
    步骤2:从计数中减去1(count_slash-1)
    步骤3:找到第(count_slash-1)个索引位置
  • 设置切片位置:
    位置1:最后一个斜杠位置= len(url)-int_last_slash_index
    Position_2:上一个斜杠位置= len(url)-int_prev_slash_index
  • 使用[-int_prev_slash_position:-int_last_slash_position]切割URL字符串

在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

4 个答案:

答案 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:]))

在网址更为复杂的情况下也可以使用

例如:http://www.someurl.com/folder-1/somestring/01.pdf?x=1

答案 3 :(得分:0)

挠了我的光头几天后,我用rsplit方法照亮了我。 代替了上面的所有算法,这可以完成所有操作:

filename = url_string.rsplit("/")[-2]

道歉,浪费大家的时间和精力。非常感谢您的评论。