Python 3.4を使用して次のような文字列のデータから117,0.049、207などの数値を抽出するにはどうすればよいですか?どのようなパターンでも、特定のデータを文字列から抽出するにはどうすればよいですか?
particulate 117㎍/㎥bad(81~150),ozone 0.049ppmaverage(0.041~0.080),overall air quality 207bad(151~250)
Python 3.4を使用して次のような文字列のデータから117,0.049、207などの数値を抽出するにはどうすればよいですか?どのようなパターンでも、特定のデータを文字列から抽出するにはどうすればよいですか?
particulate 117㎍/㎥bad(81~150),ozone 0.049ppmaverage(0.041~0.080),overall air quality 207bad(151~250)
解析非構造化テキストは厄介です:
input='particulate 117㎍/㎥bad(81~150),ozone 0.049ppmaverage(0.041~0.080),overall air quality 207bad(151~250)'
import re
input=re.sub(r'\(.*?\)','',input)
results=re.findall(r'[\d.]+',input)
print(results) # this prints ['117', '0.049', '207']
を...しかし、いつもあなたが困難な場合が望む結果を得るために:あなたはここに見られるように、正規表現で迅速な結果を得ることができます。
すべての
まず...のステップにより溶液のステップを議論してみましょう、あなたの入力は、カッコ内の数字が含まれています - あなたはそれを望んでいません。そこで、我々は最初の正規表現の置換で括弧を削除する必要があります。
input=re.sub(r'\(.*?\)','',input)
# now input is:
# particulate 117㎍/㎥bad,ozone 0.049ppmaverage,overall air quality 207bad
サブ文字列のこの置換を検索開口部ブラケットで始まる「(」と閉じ括弧で終わる「)」とすることによって、それらを置き換え空の文字列この表現を書くには、いくつかの細部を考慮に入れる必要があります:
残りの入力から数字を選びたい数字に小数点が含まれている可能性があるので、正規表現でもこれを許可する必要がありますが、一致する数字正確に正規表現を使うのは難しいです。当社のソリューションは、ピックアップしていないこと、有効なのOME定義):
-1.32 1.04e4 -3.14e-23
ここでは、私たちのパターンが数字としてピックアップした文字列である---しかし、あなたはそれを望んでいないことがあります。
10.24.12.123
すべてこれは修正することができますが、パターンはより複雑になります。そして、取得したいものと取得したくないものを正確に決定する必要があります。
ここにはPython regular expression documentationへのリンクがあります。
大変感謝しています!出来た!!! –
解決策に満足している場合は、それを正しい解決策として受け入れます。 –
ここは新しいです。それ、どうやったら出来るの? –
最も重要なステップは、*正確に*データ構造とそれから必要なものを分析することです。たとえば、「数字」と言うと、「81 150」と「0.041 0.080」はどうですか?任意の数字を取得するには簡単ですが、正確なものを得るためにより多くの努力が必要です。 – cdarke