私は、解析しようとしているweight
、depth
とheight
次の文字列から正規表現を使用しました'84" w x 39" d x 37" h'
。アウトすくいながら、私は成功を得たweight
し、depth
それのため。しかし、私height
は正しい方法でをこすることができませんでした。私が使用したパターンは非常に弱いかもしれませんが、最初の2つのフィールドでは機能します。
私は試しました:
import re
rstr = '84" w x 39" d x 37" h'
weight = re.findall(r"(.*?)\"\s*?w",rstr)[0]
depth = re.findall(r"x\s*(.*?)\"\s*?d",rstr)[0]
height = re.findall(r"x\s*(.*?)\"\s*?h",rstr)[0]
print(weight,depth,height)
私が得ている出力:
84 39 39" d x 37
取得したい出力:
84 39 37
重量、奥行き、高さは必ずしも同じ順序であるとは限りません。
正規表現を使用して上記の文字列から3つのフィールドを取得するにはどうすればよいですか?
w、d、およびhは同じ順序ではないため、1行ですべてを見つけるのは少し難しくなりますが、おそらくそれでも実行可能です。
しかし今のところ、それぞれに1行ずつ固執しましょう。
re.findall(r'\d+(?=" w)',string)[0]
re.findall(r'\d+(?=" d)',string)[0]
re.findall(r'\d+(?=" h)',string)[0]
ここでも整数を想定しており、桁数は異なる場合があります。基本的に、IMOが本当に必要なの(?=" d)
は、検索パターンにある先読み、前向きな先読みです。
ちなみに、上記の一致は現在strです。将来計算が必要な場合は、int()が必要になる場合があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加