Practical Code Examples
Real-World Scenarios for Number String Normalization
1. Financial Transaction Processing
def normalize_currency(transactions):
return [f"{float(amount):010.2f}" for amount in transactions]
transactions = ["50.5", "100", "1234.56", "0.99"]
normalized_transactions = normalize_currency(transactions)
print("Normalized Transactions:", normalized_transactions)
2. Data Logging and Tracking
def generate_sequential_id(current_count, total_width=6):
return str(current_count).zfill(total_width)
log_entries = range(1, 100)
formatted_entries = [generate_sequential_id(entry) for entry in log_entries[:5]]
print("Formatted Log IDs:", formatted_entries)
Advanced Normalization Techniques
graph TD
A[Normalization Techniques] --> B[Zero-Padding]
A --> C[Formatting]
A --> D[Dynamic Adjustment]
3. Scientific Data Alignment
def normalize_scientific_data(measurements, precision=3):
return [f"{float(m):.{precision}f}" for m in measurements]
measurements = ["0.5", "10.123", "100.0001", "0.00042"]
aligned_data = normalize_scientific_data(measurements)
print("Aligned Scientific Data:", aligned_data)
Comparison of Normalization Methods
Method |
Use Case |
Pros |
Cons |
zfill() |
Integer Padding |
Simple |
Limited to integers |
format() |
Flexible Formatting |
Powerful |
More complex |
rjust() |
Text Alignment |
Versatile |
Less numeric-specific |
4. Database ID Generation
def create_database_ids(prefix, start, count, width=5):
return [f"{prefix}{str(i).zfill(width)}" for i in range(start, start+count)]
user_ids = create_database_ids("USER", 1, 10)
print("Generated User IDs:", user_ids)
Error Handling and Validation
def safe_normalize(numbers, default_length=4):
try:
max_len = max(len(str(abs(int(num)))) for num in numbers)
return [str(num).zfill(max(default_length, max_len)) for num in numbers]
except ValueError:
return ["ERROR"] * len(numbers)
## Example with mixed input
mixed_data = ["42", "100", "abc", "1000"]
safe_normalized = safe_normalize(mixed_data)
print("Safely Normalized:", safe_normalized)
def optimize_normalization(large_dataset, chunk_size=1000):
normalized_chunks = []
for i in range(0, len(large_dataset), chunk_size):
chunk = large_dataset[i:i+chunk_size]
normalized_chunks.extend(
[str(num).zfill(4) for num in chunk]
)
return normalized_chunks
## Simulating large dataset processing
large_data = list(range(10000))
optimized_result = optimize_normalization(large_data)
print("First 10 Normalized Entries:", optimized_result[:10])