1

市場分析ツールを構築しようとしています。生データ入力は次のようにフォーマットされます。

20,000 株で 1 株あたり 550 米ドル

「1 株あたり 550 米ドルで 20,000 株」という意味です。

通常、次のコードで価格を取得します。

value = re.findall(re.compile('20,000 shares for (.*) USD each'), data)

ただし、このアプローチは、株式数 (この場合は 20,000) と価格値が変化するため、うまくいきません。このデータを抽出するより良い方法はありますか?

私の問題を不適切に説明したことを前もってお詫びします。私は Python の初心者で、このシナリオでどの技術用語を使用すればよいかわかりません。私のタイトルを表現するより良い方法がある場合は、お気軽に編集してください。事前に感謝します!

4

2 に答える 2

1

次のようなより一般的なパターンを使用できます。

([\d,.]+) shares for ([\d,.]+) USD each

また、一致する値に固執したい場合は、入力の残りを食べないように、それ.*を に変えて貪欲さを少なくすることをお勧めします。.*?

入力がどちらeachかで終了するかper share、代わりに次を使用できる場合:

([\d,.]+) shares(?: of stock)? at ([\d,.]+) USD (?:each|per share)

左括弧の後に置く?:と、一致しないグループになるため、関心のある数値と一緒にキャプチャされません。

于 2013-04-13T04:07:51.310 に答える