Rap*_*rex 0 python string replace
我的代码读取目录并将带有扩展名的文件存储到列表中.我想要做的是用替换摆脱扩展.但是,它没有保存到列表中.
print projectFilenames
for f in projectFilenames:
print f
f = f.replace('.txt','')
f = f.replace('.mdown','')
f = f.replace('.markdown','')
print f
print projectFilenames
Run Code Online (Sandbox Code Playgroud)
这是我的输出
['2010-10-30-markdown-example.txt','2010-12-29-hello-world.mdown','2011-1-1-tester.markdown']
2010-10-30-markdown-example .txt
2010-10-30-markdown-example
2010-12-29-hello-world.mdown
2010-12-29-hello-world
2011-1-1-tester.markdown
2011-1-1-tester
['2010 -10-30-markdown-example.txt','2010-12-29-hello-world.mdown','2011-1-1-tester.markdown']
我究竟做错了什么?
列表不会更改,因为您没有更新它.您没有以任何方式触及projectFilenames列表(也不是列表中的字符串.Python变量不是指针)以下是一种方法:
newlist = []
for f in projectFilenames:
f = f.replace('.txt','')
f = f.replace('.mdown','')
f = f.replace('.markdown','')
newlist.append(f)
projectFilenames = newlist
Run Code Online (Sandbox Code Playgroud)
另外,看一下os.path模块,那里有一些函数可以切断文件扩展名.os.path.splitext()具体来说.所以另一种方法是:
newlist = []
for f in projectFilenames:
f = os.path.splitext(f)[0]
newlist.append(f)
projectFilenames = newlist
Run Code Online (Sandbox Code Playgroud)
这反过来可以简化为(并符合PEP 8):
>>> import os
>>> project_filenames = ['2010-10-30-markdown-example.txt', '2010-12-29-hello-world.mdown', '2011-1-1-tester.markdown']
>>> project_filenames = [os.path.splitext(f)[0] for f in project_filenames]
>>> project_filenames
['2010-10-30-markdown-example', '2010-12-29-hello-world', '2011-1-1-tester']
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3011 次 |
最近记录: |