Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python re,从字符串数组中删除_Python_Regex - Fatal编程技术网

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我现在根据您在评论中建议的正则表达式编辑了我的答案。再次感谢,谢谢!它工作得很好:)