Регулярный синтаксис Python remove @ string до места

Я пытался использовать некоторые другие Google, но это слишком специфично, и я совершенно не знаком с регулярным выражением python. Могу ли я узнать, как я могу удалить всю строку после символа @ до следующего пробела? в то время как это то, что я делаю, но не повезло

s = re.sub('@[^\s]+', '',s)
0
nl ja de
@Rohit Jain, @ удален, но строка все еще там
добавлено автор 1myb, источник
До: @Spencerlim После: Спенсерлим
добавлено автор 1myb, источник
Каков у вас результат? Вы также хотите сохранить символ @ ?
добавлено автор Rohit Jain, источник
@SLim .. Пожалуйста, проверьте его снова. Он удалит все после и включит @ до следующего места. Итак, abc @cbs станет abc .
добавлено автор Rohit Jain, источник
пожалуйста, укажите образец ввода и желаемый результат для каждого.
добавлено автор Inbar Rose, источник
@SLim, пожалуйста, предоставьте MULTIPLE ввод проб и желаемый результат и добавьте их к вашему вопросу. не только точное слово, но и всю строку, которую вы модифицируете.
добавлено автор Inbar Rose, источник

4 ответы

Я думаю, что это не сработает для вас, потому что вы также удалили «@».

i удаляет всю строку после символа @ до следующего пробела

попробуй это:

In [1]: s='[email protected] trash trash'

In [2]: import re

In [3]: re.sub('(?<[email protected])[^\s]+','',s)
Out[3]: '[email protected] trash trash'
1
добавлено

Как насчет следующего регулярного выражения?

re.sub(r'@.*?(?=\s)', '', s)

Пример:

>>> re.sub(r'@.*?(?=\s)', '', 'text before `at`@text-right-arter`at` text after first space')
'text before `at` text after first space'
>>> 

Он ведет себя точно так же, как ваше решение, хотя ( Обновление: на самом деле не истинно). См. Комментарий nhahtdh ниже).

1
добавлено
да, вы сделали это: D
добавлено автор 1myb, источник
@nameless: Это не то же самое, что его решение. Этот случай "sjkhdfksf @kjhsjdkf" делает ваше решение отличным от его (и других людей здесь).
добавлено автор nhahtdh, источник
@nhahtdh, спасибо.
добавлено автор nameless, источник

я думаю, что это то, что вы хотите:

>>> import re
>>> s = 'unchanged1 @remove unchanged2'
>>> print re.sub('@\S+', '', s)
unchanged1  unchanged2

в соответствии с OP: «удалите всю строку после символа @ до следующего пробела»

для удаления дополнительного пространства:

>>> print re.sub('@\S+ ', '', s)
unchanged1 unchanged2

включить «@»:

>>> print re.sub('@\S+ ', '@', s)
unchanged1 @ unchanged2
0
добавлено

Из того, что вы дали в качестве входных данных и контекста.

re.sub('@\S* ','',string)

See here http://codepad.org/8KmXy7aW

0
добавлено
Это съедет все до последнего места и включит его.
добавлено автор nhahtdh, источник
@Tuim: Хорошо, хорошо. Я не спустил вас вниз, так как вопрос был довольно запутанным в первую очередь.
добавлено автор nhahtdh, источник
в соответствии с вашими собственными тестами, которые вы терпите неудачу, если ваш ввод 'test string @string test test' ваш вывод должен быть 'test string string test test' not 'test string test'
добавлено автор Inbar Rose, источник
@nhahtdh исправил ответ. Inbar Rose, если он должен заменить только @, почему бы не заменить строку?
добавлено автор Tuim, источник
@nhahtdh Достаточно честный, но вопрос: «Как удалить всю строку после символа @ до следующего места», если нет следующего пространства, она действительно удалит всю строку.
добавлено автор Tuim, источник
Python
Python
7 654 участник(ов)

Уютный чат для профессионалов, занимающихся поиском питоньих мудростей. Как не получить бан: https://t.me/ru_python/577926

Python beginners
Python beginners
4 449 участник(ов)

Вопросы про Python для чайников. Cпам и троллинг неприемлем. Не злоупотребляйте стикерами. Частозадаваемые вопросы: https://github.com/ru-python-beginners/faq/blob/master/README.md Статистика тут: https://grstats.me/chat/x4qym2k5uvfkr3al6at7

pro.python
pro.python
1 090 участник(ов)

Сообщество разработчиков под Python Создатель: @rodgelius

Rude Python
Rude Python
971 участник(ов)

Python без „девочек”, здесь матерятся и унижают Django. Not gay friendly. Правила: t.me/rudepython/114107 @rudepython | t.me/rudepython

rupython
rupython
509 участник(ов)

Группа создана с целью оперативного получения ответов на возникающие вопросы по разработке на яп python, смежные темы, а также человеческого общения. Приветствую!

Python-programming
Python-programming
266 участник(ов)

Чат группы вконтакте https://vk.com/python_community