re.sub replace spaces with comma

2019-06-17 03:43发布

问题:

I have a list of items which look like so:

 2.4       -2.0           4.3
-6.0       12.5           1.0

What I would like is to remove all those spaces and replace them with "," (comma) except for the spaces in front of first numbers (they should be just deleted (the spaces) and not replaced with anything). So the upper string items should look like so, after replacement:

2.4,-2.0,4.3
-6.0,12.5,1.0

Not like this:

,2.4,-2.0,4.3
,-6.0,12.5,1.0

Which is what the following code does:

newStrings = []
for s in strings:
    newStrings.append(re.sub('\s+', ',', s))

What regular expression for re.sub should be used to achieve that? Thank you.

回答1:

To remove the leading and trailing spaces you can use .strip(), and then to replace consecutive whitespace characters using the regular expression \s+:

>>> import re
>>> s = " 2.4       -2.0           4.3"
>>> re.sub("\s+", ",", s.strip())
'2.4,-2.0,4.3'


回答2:

There are many solutions... This doesn't even briefly cover the whole topic, but it works:

Quick solution:

In [1]: import re
   ...: d_in = "strip \t\r\n\x00er \ter\rMY\   nr\x00 \t\r\nSPAC       ES\x00  ! "
   ...: d_out = re.sub("\s+", r",", d_in)
   ...: d_out
   ...: 
Out[1]: 'strip,\x00er,er,MY\\,nr\x00,SPAC,ES\x00,!,'