首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何排序以_ in python开头的文件

问如何排序以_ in python开头的文件
EN

Stack Overflow用户
提问于 2015-07-14 21:56:20
回答 2查看 567关注 0票数 0

我在一个目录里有文件。

文件名很奇怪,其中一些以_开头,另一些以字母表开头。

代码语言:javascript
复制
    _weight.txt
     color.txt
    _height.txt

我正在寻找在python中按字母顺序排序的方法。我知道如何按字母顺序排序,但不知道以特殊字符(如_ )开头的文件。

有人能帮忙吗?

因此,根据答复,以下是我的代码:

代码语言:javascript
复制
toolpath = os.path.dirname(os.path.abspath(__file__))
directory = os.listdir(toolpath)
for files in directory:
    if files.endswith(".html")
       sorted(files, key=lambda x:x.lstrip("_").lower())
       htmlfile.write('<a href='+files+'>'+files+'</a><br>\n') 

在我不得不对txt文件进行排序的地方,它起了作用。虽然在上面的代码中,它仍然没有按字母顺序打印。我还有一个问题,例如,文件名是color.html,因此我的代码写到html文件名color.html。如何才能只将颜色写到html页面而不是color.html?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-14 21:59:44

假设您想忽略_,可以在排序/..sort键中删除_,以删除任何前导下划线:

代码语言:javascript
复制
words = ["_weight.txt","color.txt","_height.txt"]

print(sorted(words, key=lambda x: x.lstrip("_")))
['color.txt', '_height.txt', '_weight.txt']

不确定您正在排序的是什么,因为名称奇怪的files实际上是一个字符串,但是如果您希望在directory中找到所有的html文件并进行排序,那么您可以使用glob并对glob返回的列表进行排序:

代码语言:javascript
复制
from glob import glob
toolpath = os.path.dirname(os.path.abspath(__file__))
directory = os.listdir(os.path.join(toolpath,"*.html"))
directory.sort( key=lambda x: x.lstrip("_")))
票数 5
EN

Stack Overflow用户

发布于 2015-07-14 22:00:00

您可以将_放到key中。

代码语言:javascript
复制
>>> sorted(filelist, key=lambda x: x[1:] if x.startswith('_') else x)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31418085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档