Python re,从字符串数组中删除
我有一个字符串数组,如下所示:Python re,从字符串数组中删除,python,regex,Python,Regex,我有一个字符串数组,如下所示: /content/drive/My Drive/Videos/video1.avi /content/drive/My Drive/Videos/video2.avi /content/drive/My Drive/Videos/video3.avi 依此类推,我只想要视频1,视频2,视频3等等。。。我如何使用正则表达式来实现这一点?我认为您在这里并不真正需要正则表达式。你可以 s = '/content/drive/My Drive/Videos/video1
/content/drive/My Drive/Videos/video1.avi
/content/drive/My Drive/Videos/video2.avi
/content/drive/My Drive/Videos/video3.avi
依此类推,我只想要视频1,视频2,视频3等等。。。我如何使用正则表达式来实现这一点?我认为您在这里并不真正需要正则表达式。你可以
s = '/content/drive/My Drive/Videos/video1.avi'
s.split('/')[-1][:-4]
但是如果你真的想要正则表达式
re.findall(r"[\w-]+(?=\.avi$)",s)[0]
如果你还在找正则表达式
myData = """/content/drive/My Drive/Videos/video1.avi"""
regex = re.compile(r'^/[a-zA-Z]+/[a-zA-Z]+/[a-zA-Z ]+/[a-zA-Z]+/([a-zA-Z0-9]+)\..*')
match = regex.match(myData)
match.group(1)
'video1'
使用正则表达式:
import re
list_ = ['/content/drive/My Drive/Videos/video1.avi', '/content/drive/My Drive/Videos/video2.avi', '/content/drive/My Drive/Videos/video3.avi']
regex = re.compile('[^/]+(?=\.avi$)')
result = [regex.search(path).group() for path in list_]
但在Python中,不需要正则表达式来实现这一点。您可以按如下方式使用os
模块:
import os
list_ = ['/content/drive/My Drive/Videos/video1.avi', '/content/drive/My Drive/Videos/video2.avi', '/content/drive/My Drive/Videos/video3.avi']
result = [os.path.basename(path).split('.')[0] for path in list_]
在这两种情况下,您将获得result
列表的以下内容:
['video1', 'video2', 'video3']
这可能不是最好的答案,但很容易理解。 一旦您了解了这一点,您就可以尝试了解其他解决方案是如何工作的
重新导入
lst=['/content/drive/My drive/Videos/video1.avi',
“/content/drive/My drive/Videos/video2.avi”,
“/content/drive/My drive/Videos/video3.avi”]
新的_lst=[]
对于lst中的线:
s=re.search('我的驱动器/视频/(.*).avi',行)。组(1)
新的第一个附加项
打印(新)
您必须使用正则表达式吗?使用子字符串
和indexOf
(甚至拆分
)可以很容易地做到这一点,而且根本不需要将正则表达式带入其中。[^/]+(?=\.avi$)
?演示:请注意,文件名可能包含字母、数字、下划线和破折号以外的字符。请注意,文件名可能包含字母、数字和下划线以外的字符。感谢您指出这一点@AhmedAbdelhameed我现在根据您在评论中建议的正则表达式编辑了我的答案。再次感谢,谢谢!它工作得很好:)