仅使用字符串方法将字符串后跟数字匹配

时间:2019-02-28 16:14:42

标签: python python-3.x string

因此,我已经写了很多代码,到目前为止,避免导入或使用正则表达式,如果可能的话,宁愿保持这种方式。

有一个看起来像这样的列表:

mylist = ["dog", "dogs", "dogs75", "75dogs", "cats75"]

我可以像这样获得各种匹配元素的索引:

>>> [i for i, j in enumerate(mylist) if "cat" in j]
[4]
>>> [i for i, j in enumerate(mylist) if "dog" in j]
[0, 1, 2, 3]
>>> 

我实际上正在寻找的是"dogs75",实际上是任何结尾处包含整数的字符串。

可以不导入re来完成此操作吗?

3 个答案:

答案 0 :(得分:1)

您可以使用列表推导并检查每个字符串的最后一个字符是否为数字:

[ix for ix, i in enumerate(mylist) if i[-1].isnumeric()]
# [2, 4]

答案 1 :(得分:1)

您可以使用isdecimal()检查最后一个字符:

>>> mylist = ["dog", "dogs", "dogs75", "75dogs", "cats75"]
>>> [i for i, j in enumerate(mylist) if j[-1].isdecimal()]
[2, 4]

如果您希望使用非数字0-9的数字式字符,也可以将isdecimal替换为isdigitisnumeric

答案 2 :(得分:0)

[s for s in mylist if s[-1].isdigit()]

应该给您想要的列表