在Python中返回特定列表项

Све*_*вов 0 python string list

我有一个列表,其中包含几个文本文件的名称,如下所示:

["catfile.txt", "order_2014_11_11_11", "santa.txt", "order_2013_10_20"]    
Run Code Online (Sandbox Code Playgroud)

如何检查并返回列表中以"order_"或任何其他给定序列开头的这些元素?

Joh*_*024 5

>>> data = ["catfile.txt", "order_2014_11_11_11", "santa.txt", "order_2013_10_20"]    
>>> [ x for x in data if x.startswith('order_')]
['order_2014_11_11_11', 'order_2013_10_20']
Run Code Online (Sandbox Code Playgroud)

说明:

列表理解通常类似于:

[somefunction(x) for x in data if some_condition]
Run Code Online (Sandbox Code Playgroud)

在我们的例子中,我们只想从数据中选择项目,而不是操纵它们.所以,somefunction不需要,表达式简化为:

[x for x in data if some_condition]
Run Code Online (Sandbox Code Playgroud)

在我们的例子中,条件是字符串以order_.开头.Python有一个方便的字符串方法来测试它.它自然被称为startswith.所以,最终形式是:

[ x for x in data if x.startswith('order_')]
Run Code Online (Sandbox Code Playgroud)

如果你需要它,有一个类似的字符串方法来测试字符串的结尾.例如:

>>> [ x for x in data if x.endswith('txt')]
['catfile.txt', 'santa.txt']
Run Code Online (Sandbox Code Playgroud)