1

以下は、Web から抽出した行です。

AIG $30 AIG は、NYSE に上場している国際的に有名な保険会社です。ピリオドが必要です。マニュアル オート アクティブ 3 0.0510、0.0500、0.0300 [EXTRACT]

テキストを解析して関連データを取得することにより、5 つの個別の変数を作成したいと考えています。しかし、私は真剣に REGEX のドキュメントを理解していません! この例で正しく行う方法を教えてもらえますか?

名前=AIG

現在の価格 = $30

ステータス = アクティブ

世界ランキング = 3

履歴 = 0.0510、0.0500、0.0300

4

1 に答える 1

1

ここで何を達成したいのかわからない。正規表現を使用する必要はありません。次のように使用できますstr.split

>>> str = "AIG $30 AIG is an international renowned insurance company listed on the NYSE. A period is required. Manual Auto Active 3 0.0510, 0.0500, 0.0300 [EXTRACT]"
>>> list = str.split()
>>> dict = { "Name": list[0], "CurrentPrice": list[1], "Status": list[19], "WorldRanking": list[20], "History": ' '.join((list[21], list[22], list[23])) }

#output
>>> dict
{'Status': 'Active', 'CurrentPrice': '$30', 'Name': 'AIG', 'WorldRanking': '3', 'History': '0.0510, 0.0500, 0.0300'}

などを使用する代わりに、会社の説明の長さに依存しないlist[19]ように変更したい場合があります。list[-n]そのように:

>>> history = ' '.join(list[-4:-1])
>>> history
'0.0510, 0.0500, 0.0300'

フローティング ヒストリ インデックスの場合は、次のように使用する方が簡単ですre

>>> import re
>>> history = re.findall("\d\.\d{4}", str)
>>> ['0.0510', '0.0500', '0.0300']

ステータスを識別するために、履歴値のインデックスを取得してから 1 を減算できます。

>>> [ i for i, substr in enumerate(list) if re.match("\d\.\d{4}", substr) ]
[21, 22, 23]

>>> list[21:24]
['0.0510,', '0.0500,', '0.0300,']

>>> status = list[20]
>>> status
'3'
于 2012-12-22T04:05:15.073 に答える