| import os, json |
| import re |
| import pandas as pd |
|
|
| def parse_investment_range(investment_range_str): |
| |
| if investment_range_str == 'N/A': |
| return 0 |
| |
| numbers = re.findall(r'\d{1,3}(?:,\d{3})*(?:\.\d+)?', investment_range_str) |
| |
| numbers = [int(num.replace(',', '')) for num in numbers] |
| |
| return max(numbers) |
|
|
| def safe_convert_to_float(value): |
| if pd.isna(value) or value == 'N/A': |
| return None |
| try: |
| if isinstance(value, str): |
| |
| cleaned_value = re.sub("[^0-9.]", "", value) |
| |
| if cleaned_value == '': |
| return None |
| return float(cleaned_value) |
| except ValueError: |
| return None |
| |
| if isinstance(value, (int, float)): |
| return float(value) |
| return None |
|
|
| def get_range_bounds(range_str): |
| |
| if 'no' in range_str.lower(): |
| return (0, 0) |
| |
| |
| if range_str.startswith('$'): |
| numbers = re.findall(r'\d+', range_str.replace(',', '')) |
| |
| if len(numbers) != 2: |
| return (0, 0) |
| |
| |
| low, high = map(int, numbers) |
| return low, high |
| |
| |
| elif 'over' in range_str.lower(): |
| number = re.findall(r'\d+', range_str.replace(',', '')) |
| if number: |
| |
| return (int(number[0]), float('inf')) |
| |
| |
| return (0, 0) |