2017-09-23 14 views
0

文字列のリスト内の小数点を削除するにはどうすればよいでしょうか?理想的には、単一の操作で、content = [x for x in content if not x.isdecimal()]Python:文字列の10進数を識別するにはどうすればよいですか?

のようなもの(悲しいことに、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

になりたい場合は文字列が10進数の場合は、テストするために正規表現を使用する必要があります。

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

これは非常に優れていますが、1桁の数字を伝えることができます。 – Unstack

+0

@Unstack整数を保持したいのですか? 1桁の数字は整数なので、結果リストに入ります。 –

+0

@Unstackとにかく、私は自分の答えを編集したので、整数も削除されるはずです。 –

0

ただ、あなたはまた、RegexにPythonのドキュメントをチェックアウトする必要があり、Mr Geek答えに加えます。

+0

これはコメントではなく、答えでなければなりません! – r2d2oid

+0

あなたの修正のおかげで、ちょうど私がしたことを実現しました。 – Jermaine

関連する問題