如果美元金额前面有 `of`,但不一定有美元符号,我们可以使用正则表达式模式来匹配这种情况。以下是一个示例代码:
```python
import re
def extract_dollar_amount(text):
pattern = r"(?:of\s+)?([\d,]+(?:\.\d{2})?)"
match = re.search(pattern, text)
if match:
amount_str = match.group(1).replace(",", "")
# Check for currency-related words before the number
if re.search(r"(?:USD|US\$|dollar|dollars)\W*$", text, re.IGNORECASE):
return float(amount_str)
return None
texts = [
"The court finds that the plaintiff has shown damages of 450,000 dollars.",
"An amount of 250000 will be sufficient to remedy the harms...",
"Only an amount of 10,000 is appropriate in this case.",
"Counsel has shown damages of 1,000,000.",
"The total cost of the project is estimated at around 2 million dollars.",
"The settlement agreement provides for payment of an amount of 500,000 dollars.",
"The defendant shall pay a fine of 100,000 dollars.",
"The value of the property is approximately 1.5 million dollars."
]
damages = []
for text in texts:
amount = extract_dollar_amount(text)
if amount:
damages.append(amount)
mean_damage = sum(damages) / len(damages)
print("Mean damage award: ${:,.2f}".format(mean_damage))
```
在这个例子中,我们修改了正则表达式模式,使用 `(?:of\s+)?` 来匹配可能出现的 `of`。这个模式中的 `(?:...)` 表示一个非捕获组,`\s+` 匹配一个或多个空格字符。
然后,我们在找到数字后检查其前面是否有与货币相关的词语,方法与之前相同。