hoojpop
@hoojpop

Как проверять наличие пробела в слове?

Приветствую.

Есть переменная, которая используется для проверки и вывода определённого текста из текстового файла.

pkill = '.*? (\\w+):(\\w+)\\b(?!:)' # Вывод Player:Attacker (Kirril:Lexa)


Через проверку проверяем наличие данной строки из текстового файла:
if(re.search(pkill, k)):
     target = re.search(pkill, k).group(1)
     killedby = re.search(pkill, k).group(2)
     await kchannel.send(':crossed_swords: Игрок **' + killedby + '** убил игрока **' + target + '**')


Что мне нужно.
Например, в текстовый файл записалось новое значение, которое я получил от сервера:
[17:01:SS] Vasya Petrov:Jeka
[17:02:SS] Jeka:Vasya Petrov
[17:03:SS] Ivan:Maks

Вывод будет следующий:
Игрок Jeka убил игрока Petrov
Игрок Vasya убил игрока Jeka
Игрок Maks убил игрока Ivan


Проблема возникает в регулярном выражение. Надо, чтобы вместо: Игрок Jeka убил игрока Petrov / Игрок Vasya убил игрока Jeka, было полное имя Васи (Игрок Vasya Petrov убил игрока Jeka / Игрок Jeka убил игрока Vasya Petrov)

Как правильно построить проверку, чтобы выводился текст и со словами, где присутствует пробел и где его нету.
(Игрок Jeka убил игрока Vasya Petrov
Игрок Vasya Petrov убил игрока Jeka
Игрок Maks убил игрока Ivan)
  • Вопрос задан
  • 104 просмотра
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
\w - это символы [a-zA-Z0-9_], пробела тут нет, как видно, поэтому первое имя выпадает. Можно просто через точку поискать

for line in text:
    attacker, victim = re.findall(r'\]\s(.+):(.+)', line)[0]
    await kchannel.send(f':crossed_swords: Игрок **{attacker}** убил игрока **{victim}**')
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@qid00000000
Мало что знаю, но информацию найду в гугле
Сходу могу сказать - проблема в регулярке


[17:01:SS] Vasya Petrov:Jeka


Я бы парсил регуляркой:

^\[.*\] (.*):(.*)$
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы