python:re-modu的子函数

2024-04-24 08:00:14 发布

您现在位置:Python中文网/ 问答频道 /正文

这应该是一个基本的事情做,但我不能得到它的工作,尽管下面的例子从网上很多。 我尝试的是使用子函数从完整路径中获取文件名。你知道吗

所以,如果

output="/home/alvarofeal/Desktop/prueba_sub.avi"
re.sub(r'(.*\/)*', "", output)
print output

output: /home/alvarofeal/Desktop/prueba_sub.avi

输出不应该是:

prueba_sub.avi

Tags: 路径rehomeoutput文件名事情例子prueba
3条回答

你不需要正则表达式任务。作为你可以用os.path.basenamestr.split一起使用一种更为python的方式:

>>> os.path.basename('/home/alvarofeal/Desktop/prueba_sub.avi').split('.')[0]
'prueba_sub'

或者只需使用basename获取格式为的名称:

>>> os.path.basename('/home/alvarofeal/Desktop/prueba_sub.avi')
'prueba_sub.avi'

你必须这么做

output = re.sub(r'(.*\/)*', "", output)

因为re.sub()返回新字符串

使用ntpath

>>>import ntpath
>>>ntpath.basename(output)
'prueba_sub.avi'

re.sub()返回一个新字符串。字符串是不可变的,不能就地更改。你知道吗

您正在忽略返回值;如果要替换旧值,请将其存储回output

output = "/home/alvarofeal/Desktop/prueba_sub.avi"
output = re.sub(r'(.*\/)*', "", output)
print output

如果您所做的只是分割文件路径的基名称,那么您可能希望改用^{} function。你知道吗

相关问题 更多 >