获取比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中另一个字符串“大”的字符串列表的元素的主要内容,如果未能解决你的问题,请参考以下文章

Python|寻找比目标字母大的最小字母问题解决方法

python 如果它是python中另一个列表的子列表,则返回列表的索引

如何知道给定字符串是不是是Java中另一个字符串的子字符串

如何使用 Django 中另一个模型的主键获取条目?

如何一次比较二维数组的2列与python中另一个数组的列

使用同一 Dataframe 中另一列的 int 作为索引获取列中的列表值