2014-11-15 5 views
3

У меня есть список элементов, которые выглядят следующим образом:re.sub заменить пробелы с запятой

2.4  -2.0   4.3 
-6.0  12.5   1.0 

То, что я хотел бы, чтобы удалить все эти пробелы и заменить их «» (запятая), за исключением пространства перед первыми числами (они должны быть просто удалены (пробелы) и не заменены ничем). Таким образом, верхние элементы строк должны выглядеть так, после замены:

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

Не нравится:

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

Что и делает следующий код:

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

Что регулярное выражение для re.sub следует использовать для достижения этого? Спасибо.

ответ

5

Чтобы удалить ведущие и завершающие пробелы, которые можно использовать .strip(), а затем заменить последовательные пробельные символы, используя регулярные выражения \s+:

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

Спасибо, Дэниел. Есть ли какой-нибудь начинающий дружественный учебник по регулярному выражению? Я пробовал этот, но выглядит сложным для моего уровня знаний: http://www.tutorialspoint.com/python/python_reg_expressions.htm – marco

+0

Существует много, но одно для Python - https: //docs.python .org/2/HOWTO/regex.html. – DanielGibbs

+0

Проверено это тоже. Иногда я чувствую, что люди, которые не хотят, чтобы другие люди изучали Python, пишут такие документы. Спасибо, хотя. – marco

0

Есть много решений ... Это даже не кратко крышку вся тема, но она работает:

Быстрое решение:

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,!,' 
Смежные вопросы