Qustion: Display a large number (like 8927369280) in printed text, it’s often helpful to insert commas between each grouping of three numbers. The rule here is that we want to
insert a comma at locations having digits on the right in exact sets of three, and at least one digit on the left. Answer: We can fulfill the second requirement using lookbehind. The simple subexpression
(?<=/d)
will match locations that have at least one digit to their left. For the second requirement we need to match sets of three numbers up to the end of the string. The simple expression
(/d/d/d)+$
accomplishes this task, and if we wrap it in a lookahead construct it will match at
locations that are an even set of triple digits from the end of the string. So the completed regular expression
#!/usr/bin/env python
import re
num = 8927369280
print re.sub(r'(?<=/d)(?=(/d/d/d)+$)',',', str(num))
Notes: Take care of the regex part:
r'(?<=/d)(?=(/d/d/d)+$)'