python replace没用_Python replace不使用lis

正如在其他答案中提到的,文件名列表没有更改的原因是因为您的代码没有更改它。有很多方法可以解决这个问题,包括建立一个新的列表并用它替换原来的列表。在

我认为最简单的方法是在迭代列表元素时修改列表(但是在执行此操作时必须小心,不要修改列表中尚未看到的部分)。Python有一个名为enumerate()的内置函数,它使这种任务易于编写代码。enumerate()所做的是返回一个“iterator”对象,当它从序列中提供每个项时,该对象对这些项进行计数——因此计数也是该序列中项目的索引,必要时可以使用该索引更新相应的列表元素。在

由于您的代码处理的是文件名,因此可以通过使用名为os.path的内置模块来进一步改进它,该模块可用于处理路径和文件名。该模块有一个splitext()函数,用于将文件名分成两部分:“根”和扩展名。在文档中,它被称为root而不是filename,因为它可以在其前面添加目录路径信息。在

如果您的代码是用enumerate()和os.path.splitext()重写的,则可能如下所示:import os

projectFilenames = ['2010-10-30-markdown-example.txt',

'2010-12-29-hello-world.mdown',

'2011-1-1-tester.markdown']

for i,f in enumerate(projectFilenames):

root,ext = os.path.splitext(f)

if ext in ('.txt', '.mdown', '.markdown'):

projectFilenames[i] = root # update filename list leaving ext off

print projectFilenames

# ['2010-10-30-markdown-example', '2010-12-29-hello-world', '2011-1-1-tester']

如果您想删除所有文件扩展名,而不仅仅是特定的扩展名,您可以将if ext in ('.txt', '.mdown', '.markdown'):更改为仅if ext:。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值