这应该是一个不同的基本要做的事情,但我无法让它工作,尽管从网络上了解了很多例子。 我正在尝试的是使用子函数从完整路径获取文件的名称。
所以,如果
output="/home/alvarofeal/Desktop/prueba_sub.avi"
re.sub(r'(.*\/)*', "", output)
print output
output: /home/alvarofeal/Desktop/prueba_sub.avi
输出不应该是:
prueba_sub.avi
答案 0 :(得分:2)
re.sub()
会返回新字符串。字符串是不可变的,不能就地更改。
你忽略了返回值;如果要替换旧值,请将其存储在output
中:
output = "/home/alvarofeal/Desktop/prueba_sub.avi"
output = re.sub(r'(.*\/)*', "", output)
print output
如果你所做的只是拆分文件路径的基本名称,你可能想要使用os.path.basename()
function代替。
答案 1 :(得分:1)
你必须这样做,
output = re.sub(r'(.*\/)*', "", output)
因为re.sub()
返回新字符串
ntpath
或
>>>import ntpath
>>>ntpath.basename(output)
'prueba_sub.avi'
答案 2 :(得分:1)
您不需要正则表达式执行此任务。作为一种更加pythonic的方式,您可以os.path.basename
使用str.split
:
>>> 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'