我试图从文件位置列表中获取文件名。我认为这涉及到弦切片。在
我做的是:
L = ['C:\\Design\dw\file4.doc',
'C:\\light\PDF\downloads\list.doc',
'C:\\Design\Dq\file4g.doc',
'C:\\Design\Dq\file4r.doc',
'C:\\Design\Dq\file4k.doc',
'C:\\Design\Dq\ole.doc',
'C:\\GE\easy\file\os_references(9).doc',
'C:\\mate\KLO\Market\BIZ\KP\who\Documents\REF.doc']
LL = []
for a in L:
b = a.split('\')
for c in b:
if c.endswith('.doc'):
c.replace('.doc', '')
LL.append(c)
print LL
问题1:输出仍包含“.doc”。为什么,我怎么才能把它们取下来?在
问题2:获取文件名的更好方法是什么?在
谢谢。在
第一个答案:replace返回字符串的一个副本,因此不保存更改。
第二个答案:您需要获得几个路径的原始表示,因为像
'\f'
这样的组合被解释为utf-8字符。所以最棘手的部分是将字符串格式化为它的原始表示。为此,我使用了this answer
一旦我们有了这个函数,我们就可以很好地操作字符串。
我使用
re.split
接受unix和dos格式的路径现在,
^{pr2}$L
包含路径部分的列表,因此您可以访问文件名及其扩展名,从而获得每个列表的最后一个元素你实际上没有在你的例子中做任何切片。你在分裂和替换。因为我们知道文件名和扩展名永远是路径的最后一部分,所以可以在拆分后使用负索引来访问它。在
一旦我们在句点上再次拆分,文件名将始终是第0个元素,因此我们只需获取该元素并将其添加到列表中。在
编辑:我刚刚注意到,这个方法对于包含
\f
的路径会有问题,因为这是一个特殊的Python字符。在第一个问题的答案是字符串是不可变的,.replace()不会就地修改字符串,即:
我对第二个问题的回答如下:
^{pr2}$祝你好运,伙计。Python是一种优秀的语言。在
相关问题 更多 >
编程相关推荐