我是python的新手,我正在尝试在python的另一个字符串中剪切一段字符串。 我看了其他类似的问题,但我找不到答案。
我有一个变量,其中包含域列表,域名如下所示:
http://92.230.38.21/ios/Channel767/Hotbird.mp3 http://92.230.38.21/ios/Channel9798/Coldbird.mp3
...
我想要mp3文件名(在本例中为Hotbird,Coldbird等)
我知道我必须能够使用re.findall()来完成它,但我不知道我需要使用的正则表达式。
有什么想法吗?
更新: 这是我使用的部分:
for final in match2:
netname=re.findall('\W+\//\W+\/\W+\/\W+\/\W+', final)
print final
print netname
哪个不起作用。然后我试着做一个只削减IP地址(92.230.28.21)而不是名字的那个:
for final in match2:
netname=re.findall('\d+\.\d+\.\d+\.\d+', final)
print final
答案 0 :(得分:5)
您可以使用str.split()
:
>>> urls = ["http://92.230.38.21/ios/Channel767/Hotbird.mp3", "http://92.230.38.21/ios/Channel9798/Coldbird.mp3"]
>>> for url in urls:
... print(url.split("/")[-1].split(".")[0])
...
Hotbird
Coldbird
以下是基于正则表达式的示例:
>>> import re
>>>
>>> pattern = re.compile(r"/(\w+)\.mp3$")
>>> for url in urls:
... print(pattern.search(url).group(1))
...
Hotbird
Coldbird
我们使用捕获组(\w+)
来捕获由一个或多个aplhanumeric字符组成的mp3文件名,后面跟着一个点,mp3
位于网址的末尾。
答案 1 :(得分:0)
怎么样?
([^ /] * MP3)$
我认为这可能有用
基本上它说......
从行尾开始匹配,以mp3开头,然后将所有内容匹配回第一个斜杠。
认为它会表现良好。