如何从列表中删除特定字符串

时间:2014-01-07 11:16:15

标签: python

从以下列表中,如何删除以Text结尾的元素。

我的预期结果为a=['1,2,3,4']

我的列表是a=['1,2,3,4,5Text,6Text']

我应该使用endswith来解决这个问题吗?

3 个答案:

答案 0 :(得分:4)

在逗号上拆分,然后过滤仅为数字的字符串:

a = [','.join(v for v in a[0].split(',') if v.isdigit())]

演示:

>>> a=['1,2,3,4,5Text,6Text']
>>> [','.join(v for v in a[0].split(',') if v.isdigit())]
['1,2,3,4']

看起来就像你真的想要处理多个元素的列表一样,此时你可以只过滤:

a = ['1', '2', '3', '4', '5Text', '6Text']
a = filter(str.isdigit, a)

或者,使用列表理解(也更适合Python 3):

a = ['1', '2', '3', '4', '5Text', '6Text']
a = [v for v in a if v.isdigit()]

答案 1 :(得分:1)

使用str.endswith过滤掉这些项目:

>>> a = ['1,2,3,4,5Text,6Text']
>>> [','.join(x for x in a[0].split(',') if not x.endswith('Text'))]
['1,2,3,4']

此处str.split将字符串拆分为','并返回一个列表:

>>> a[0].split(',')
['1', '2', '3', '4', '5Text', '6Text']

现在过滤掉此列表中的项目,然后使用str.join将其加入。

答案 2 :(得分:0)

试试这个。这适用于你最后的每一个文本。

a=['1,2,3,4,5Text,6Text']
a = a[0].split(',')

li = []
for v in a:
    try : li.append(int(v))
    except : pass

print li