获取比python中另一个字符串“大”的字符串列表的元素
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取比python中另一个字符串“大”的字符串列表的元素相关的知识,希望对你有一定的参考价值。
我有一个python字符串列表,我需要检查该列表中的元素是否包含大于特定值的日期。
files = ["20_0506 Fee.csv",
"20_0520 Fie.csv",
"20_0603 Foe.csv",
"20_0604 Fum.csv"]
latest = "20_0602"
files
是文件名开头的日期的文件列表。我需要获取所有大于最新日期latest
的文件。
我是否缺少一种简单的方法来做到这一点?
我尝试使用以下方法从files
中选择日期:
filedates = [i[:7] for i in files]
然后我选择的日期大于latest
:
noobs = [i for i in filedates if i >= latest]
但是问题是我现在得到另一个列表:
noobs
>>> ['20_0603', '20_0604']
我被困在试图找出如何在files
中检查这些字符串,并意识到我在圈子中奔跑。
在此示例中,输出应为:
["20_0603 Foe.csv", "20_0604 Fum.csv"]
对我来说,最简单的方法是获取文件名中具有“日期”部分大于latest
中存储的“日期”的所有文件?
答案
>>> files = ["20_0506 Fee.csv",
... "20_0520 Fie.csv",
... "20_0603 Foe.csv",
... "20_0604 Fum.csv"]
>>>
>>> latest = "20_0602"
>>> [file for file in files if file > latest]
['20_0603 Foe.csv', '20_0604 Fum.csv']
这里可以进行简单的字符串比较,因为日期在文件名的开头,并且采用标准格式。您甚至无需费心将其与字符串的其余部分分开。
另一答案
您可以使用列表推导来过滤files
中日期大于或等于latest
的值:
files = ["20_0506 Fee.csv",
"20_0520 Fie.csv",
"20_0603 Foe.csv",
"20_0604 Fum.csv"]
latest = "20_0602"
out = [f for f in files if f[:7] >= latest]
print(out)
输出:
['20_0603 Foe.csv', '20_0604 Fum.csv']
请注意,由于日期的各部分按YMD
顺序,因此您可以直接将它们按字符串排序,而无需转换为日期类型的对象。
另一答案
尽管,这里已经给出的解决方案可以很好地工作,通过比较字符串您将获得最新的文件。
以防万一您想进行日期时间比较。
[这里,我带了一个函数fileName
并将其与latestDate
进行比较。
from datetime import datetime
def isGreaterThanLatest(fileName, latestDate):
date,name = fileName.split()
return datetime.strptime(date.strip(), "%y_%m%d") > latestDate
files = ["20_0506 Fee.csv",
"20_0520 Fie.csv",
"20_0603 Foe.csv",
"20_0604 Fum.csv"]
latestDate = datetime.strptime("20_0602", "%y_%m%d")
out = [f for f in files if isGreaterThanLatest(f, latestDate)]
print(out)
输出:
['20_0603 Foe.csv', '20_0604 Fum.csv']
以上是关于获取比python中另一个字符串“大”的字符串列表的元素的主要内容,如果未能解决你的问题,请参考以下文章