Practical Examples
Data Logging and Reporting
## System performance logging
class SystemMonitor:
def log_performance(self, cpu_usage, memory_usage):
log_entry = "CPU: %5.2f%% | Memory: %5.2f%% | Timestamp: %s" % (
cpu_usage,
memory_usage,
"2023-06-15 10:30:45"
)
print(log_entry)
monitor = SystemMonitor()
monitor.log_performance(45.5, 67.3)
Financial Calculations
## Currency formatting for LabEx transactions
def format_transaction(amount, currency='USD'):
return "Transaction: %s %.2f" % (currency, amount)
print(format_transaction(1234.56))
print(format_transaction(9876.54, 'EUR'))
Scientific Data Representation
## Scientific data formatting
def format_scientific_data(value, precision=3):
return "Experimental Result: %.*e" % (precision, value)
print(format_scientific_data(0.00123456))
print(format_scientific_data(1234567.89, 2))
## User profile formatting
user_data = {
'username': 'labex_user',
'age': 28,
'score': 92.5
}
profile_template = """
User Profile:
- Username: %(username)s
- Age: %(age)d
- Performance Score: %(score).1f
"""
print(profile_template % user_data)
graph TD
A[Raw Data] --> B{Formatting Method}
B --> C[Validate Data]
C --> D[Apply Formatting]
D --> E[Generate Output]
E --> F[Display/Store Result]
Scenario |
% Formatting |
Modern Alternative |
Simple Strings |
Good |
Less Preferred |
Numeric Precision |
Moderate |
Better with .format() |
Complex Templates |
Limited |
Recommended: f-strings |
Error Handling Strategies
def safe_format(template, data):
try:
return template % data
except TypeError as e:
print(f"Formatting Error: {e}")
return "Invalid Formatting"
## Safe formatting demonstration
print(safe_format("Value: %d", 42))
print(safe_format("Value: %d", "not a number"))
## Efficient formatting for large data processing
def process_large_dataset(data_points):
formatted_results = []
for point in data_points:
result = "%6.2f" % point
formatted_results.append(result)
return formatted_results
sample_data = [1.23, 4.56, 7.89, 10.11]
print(process_large_dataset(sample_data))
Best Practices
- Use appropriate format specifiers
- Handle potential type mismatches
- Consider readability and maintainability
- Be aware of performance implications