Python удалить пробелы и добавить

В настоящее время я пишу плагин уведомления о рычании для мессенджера emesene на OS X. Он почти работает, за исключением случаев, когда дело доходит до отображения фрагмента сообщения.

Сообщение передается в функцию рычания как переменная, однако гроул не принимает пробелы в отображаемом сообщении.

Итак, мне нужна помощь, это скрипт для удаления пробелов между несколькими словами и замены их на \, а затем на пробел.

например Оригинал: Это сообщение Что нужно: Это\ это\ сообщение\

Я просмотрел похожие ответы, но не смог понять, как добавить косую черту.


person Josh Fradley    schedule 09.06.2011    source источник
comment
Я только что понял, что это будет большой проблемой, если сообщение будет содержать обратную косую черту или другие escape-последовательности. то есть this\ message станет this\\ message и пробел не будет экранирован. Вот почему вы должны следовать совету @Ignacio.   -  person trutheality    schedule 10.06.2011


Ответы (4)


Вместо того, чтобы пытаться сделать это с помощью os.system(), используйте вместо этого subprocess, передавая программу и аргументы как список.

person Ignacio Vazquez-Abrams    schedule 09.06.2011

Просто используйте метод replace класса строки:

message_string = "This is a message"
print message_string.replace(" ", "\ ")

возвращает:

$ python test.py
This\ is\ a\ message

См. документацию Python string.replace.

person MGwynne    schedule 09.06.2011
comment
Также взгляните на ответ @Ignacio. Это, вероятно, более подходящий способ решения вашей проблемы и в целом намного безопаснее. - person MGwynne; 09.06.2011

Вы можете сделать это, используя метод строк replace.

person Michael J. Barber    schedule 09.06.2011

Все используют замену, так что вот другое решение:

print '\ '.join(message.split(' '))
person trutheality    schedule 09.06.2011
comment
Это приведет к потере нескольких пробелов, а также всех вкладок и других пробелов. - person Ignacio Vazquez-Abrams; 09.06.2011
comment
@ Игнасио Васкес-Абрамс: Больше нет. - person trutheality; 09.06.2011