Python re to separate some data values

Joshua Judson Rosen rozzin at hackerposse.com
Wed Apr 28 18:28:29 EDT 2021


On 4/28/21 5:57 PM, Bruce Labitt wrote:
> If someone could suggest how to do this, I'd appreciate it.  I've 
> scraped a table of fine thread metric screw parameters from a website.  
> I'm having some trouble with regex (re) separating the numbers.  Have 
> everything working save for this last bit.
> 
> Here is a sample string:
> 
> r1[1] = ' 17.98017.87417.65517.59917.43917.291'
> 
> I'm trying to separate the numbers.  It should read like this:
> 
> 17.980, 17.874, 17.655, 17.599, 17.439, 17.291
> 
> There's more than 200 lines of this, so it would be great to automate 
> it!  Each number has 3 digits of precision, so I want to add a comma and 
> a space after the third digit.
> 
> re.search('(\.)\d{3,3}', r1[1]) returns
> <re.Match object; span=(3, 7), match='.980'> so it found the first instance.
> 
> But, re.sub('(\.)\d{3,3}', '(\.)\d{3,3}, ', r1[1]) yields a KeyError: 
> '\\d' (Python3.8).  Get bad escape \d at position 4.
The second argument [the replacement string] to re.sub(pattern, repl, string) is not supposed to
just be a variation of the pattern-matching string that you passed as the first argument.

I think the best illustration that I can give here is to just fix this up for you:

	re.sub(r'(\.)(\d{3,3})', r'\1\2, ', r1[1])

-- 
Connect with me on the GNU social network! <https://status.hackerposse.com/rozzin>
Not on the network? Ask me for more info!


More information about the gnhlug-discuss mailing list