2017-09-23 86 views
0

如何識別字符串列表中的十進制數字,以便將其刪除?理想的情況是在一個單一的操作,像content = [x for x in content if not x.isdecimal()]Python:如何識別字符串中的十進制數字?

(可悲的是,isdecimal()和ISNUMERIC()不要在這裏工作)

舉例來說,如果content = ['55', 'line', '0.04', 'show', 'IR', '50.5', 'find', 'among', '0.06', 'also', 'detected', '0.05', 'ratio', 'fashion.sense', '123442b']我想輸出是content = ['line', 'show', 'IR', 'find', 'among', 'also', 'detected', 'ratio', 'fashion.sense', '123442b']

+0

那麼你想實現什麼?過濾包含小數點的列表中的字符串?保留那些,丟棄那些?請確實包括投入和預期產出。 –

+0

對不起,這是一個嚴重的問題。編輯。 – Unstack

+0

你寫了*一個字符串列表*。發佈該列表 – RomanPerekhrest

回答

3

您應該使用正則表達式來測試一個字符串是否是一個十進制:

import re 
content = ['line', '0.04', 'show', 'IR', '50.5', 'find', 'among', '0.06', 'also', 'detected', '0.05', 'ratio', 'fashion.sense', '123442b'] 
regex = r'^[+-]{0,1}((\d*\.)|\d*)\d+$' 
content = [x for x in content if re.match(regex, x) is None] 
print(content) 
# => ['line', 'show', 'IR', 'find', 'among', 'also', 'detected', 'ratio', 'fashion.sense', '123442b'] 
+0

這很好,但它可以讓單位數字透過。 – Unstack

+0

@Unstack你想保持整數,不是嗎?個位數字是整數,所以它們在結果列表中。 –

+0

@Unstack無論如何,我編輯了我的答案,它現在應該刪除整數。 –

0

只是增加Mr Geek回答,您也應該檢查出Regex蟒的文檔。

+0

這應該是一個評論,然後不是答案! – r2d2oid

+0

感謝您的糾正,只是意識到我做了什麼。 – Jermaine

相關問題