Другая реализация, использующая регулярное выражение, получает слово, следующее за @
из строки.
import re
s='@VirginAmerica it was amazing, and arrived an hour early.'
t='heyyyyy@VirginAmerica , am I dreaming?'
m='heyyyyy @VirginAmerica , am I dreaming?'
u=''
f='@United...'
h='@United@VirginAmerica'
for text in [s, t, m, u, f, h]:
print(re.findall(r'@(\w+)', text))
печатает
['VirginAmerica ']
['VirginAmerica ']
['VirginAmerica ']
[]
['United']
['United', 'VirginAmerica']
Также приятно отметить, re - это стандартная библиотека Python, поэтому вы не используете ничего, что уже не включено в Python.
Если вы не хотите использовать регулярное выражение, вы можете использовать split еще, но что-то подобное приведет кто же самое, что и выше:
s='@VirginAmerica it was amazing, and arrived an hour early.'
t='heyyyyy@VirginAmerica , am I dreaming?'
m='heyyyyy @VirginAmerica , am I dreaming?'
u=''
f='@United...'
h='@United@VirginAmerica'
for text in [s, t, m, u, f, h]:
_, *words = text.split('@')
print([words.split()[0] for word in words])
Редактировать
Согласно вашему комментарию, чтобы получить первое вхождение слова, следующего за @
, например, первое слово'united'
в h
просто используйте нарезку списка (просто убедитесь, что хотя бы одно слово соответствует регулярному выражению, в противном случае используйте попытку, кроме блока)
h='@United@VirginAmerica'
re.sub(r'@(\w+)' h)[0]
#United
Чтобы получить слово без первого вхождения @word, используйте sub Я также добавил пробел и знак вопроса после него, чтобы убрать пробел, чтобы он выглядел правильно при печати. (если вы хотите напечатать все удаленные вхождения, просто удалите count
из этого метода)
s='@VirginAmerica it was amazing, and arrived an hour early.'
re.sub(r'@(\w+) ?', '', s, count=1)
#it was amazing, and arrived an hour early.
У меня есть все, что я сделал в repl.it .это попытка