2017-09-23 59 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

相关问题