2014-01-07 90 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 
相關問題