この記事では、数値を単純にフィルタリングおよび削除するPythonの方法を要約します。次のように、参照用にあなたと共有してください:
数字、漢字、文字を含むリストから数字のみを含む文字を除外したい場合は、もちろん通常の式を使用して完成させることができますが、少し面倒なので、より賢い方法を使用できます。
1、 通常の式の解決
import re
L =[u'シャオミン','xiaohong','12','adf12','14']for i inrange(len(L)):if re.findall(r'^[^\d]\w+',L[i]):
print re.findall(r'^\w+$',L[i])[0]
elif isinstance(L[i],unicode):
print L[I]
2、 規則的な表現を巧みに避けてください
L =['xiaohong','12','adf12','14',u'Xiaoming']for x in L:try:int(x)
except:
print x
3、 文字列組み込みメソッドを使用する
L =['xiaohong','12','adf12','14',u'Xiaoming']
# python3の場合、文字列を使用することもできます.isnumeric()方法
for x in L:if not x.isdigit():
print x
4、 両端の数字を削除
両端に数字が含まれている可能性のある文字列の数字を削除するだけの場合は、次のように組み込みのストリップを使用できます。
In [24]:import string
In [25]: astring ='12313213215just for 32 test 1306436'
In [26]: astring.strip(string.digits)
Out[26]:'just for 32 test '
In [27]: astring.rstrip(string.digits)
Out[27]:'12313213215just for 32 test '
In [30]: astring.lstrip(string.digits)
Out[30]:'just for 32 test 1306436'
# 注意
In [31]: astring
Out[31]:'12313213215just for 32 test 1306436'
In [32]: astring.strip('0123456')
Out[32]:'just for 32 test '
. strip([char])のcharが指定されると、set(char)に含まれなくなるまで両端の文字がインターセプトされるため、注文する必要はありません。覚えておいてください。
拡張の例:
crazystring ='dade142.!0142f[., ]ad'
# 数字のみを保持する
new_crazy =filter(str.isdigit, crazystring)print(''.join(list(new_crazy))) #出力:1420142
# 文字だけを保持する
new_crazy =filter(str.isalpha, crazystring)print(''.join(list(new_crazy))) #眠りにつく:dadefad
# 文字と数字のみを保持する
new_crazy =filter(str.isalnum, crazystring)print(''.join(list(new_crazy))) #出力:dade1420142fad
# 数字を0のままにしておきたい場合-9と小数点'.'カスタム機能
new_crazy =filter(lambda ch: ch in'0123456789.', crazystring)print(''.join(list(new_crazy))) #出力:142.0142.
上記のコードの結果:
1420142
dadefad
dade1420142fad
142.0142.
これまでのところ、pythonで数値をフィルタリングする方法についてのこの記事を紹介します。関連するpythonでデジタルコンテンツをフィルタリングする方法については、ZaLou.Cnで以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後、ZaLou.Cnをさらにサポートしていただければ幸いです。 !
Recommended Posts