2014-01-07 94 views
0

从以下列表中,我该如何删除以Text结尾的元素。如何从列表中删除特定的字符串

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

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

我应该使用的endsWith去了解这个问题呢?在逗号

+0

为什么你的列表包含在它的逗号分隔值一个字符串,为什么你要在一个单一字符串输出,而不是更实用的东西的清单?你喜欢“[1,2,3,4]”的结果吗? – user2357112

+0

您是否想删除字面上以“Text”结尾的项目,或者您想要更通用的项目,例如删除其中包含非数字字符的项目? – user2357112

回答

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加入它们。

+0

是的,我需要数组中的结果 – Rajeev

+0

@Rajeev将该表达式置于'[]'内(解决方案已更新)。 –

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

“5''和”6''不出现在OP的预期输出中。 – user2357112

+0

@ user2357112:啊,我太聪明了一半。 –

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 
相关问题