Задать вопрос
hoojpop
@hoojpop

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

Есть TXT-файл из которого через регулярное выражения нужно вывести определённый текст.\
Есть два текста:

1. Got character ZDOID from Player : 2556225565:148 - Игрок возродился
2. Got character ZDOID from Player : 0:0 - Игрок умер.


Для того, чтобы вывести текст возрождения использую:

spawn_event = '.*?Got character ZDOID from (\\w+)\\b'


Для смерти (самое простое):

player_death = '.*?Got character ZDOID from (\w+) : 0:0'


---
Через бесконечный цикл, я проверяю наличие данного текста:

with open(file, encoding='utf-8', mode='rt') as a:
        a.seek(0,2)
        while True:
            i = a.readline()
            if(re.search(pdeath, i)):
                pname = re.search(pdeath, i).group(1)
                print(':coffin: **' + pname + '** только что умер!')
            if(re.search(sevent, i)):
                player = re.search(sevent, i).group(1)
                greeting = ['прибыл на сервер ', 'возродился на сервер ', 'прибыл в мир ', 'приземлился на сервер ']
                i = random.choice(greeting)
                print('> **{0}** {1}*{2}*'.format(player, i, SERVER))


---

Когда игрок возрождается, выводиться всё как нужно:

> **Кадгар** приземлился на сервер *Asgard*

Но когда проверяю вывод текста на смерть, выводиться вот что:

:coffin: **Кадгар** только что умер!
> **Кадгар** возродился на сервер *Asgard*


Почему так происходит, вроде вывод дальнейшего текста ограничил \\b.
  • Вопрос задан
  • 118 просмотров
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 1
SoreMix
@SoreMix Куратор тега Python
yellow
В принципе, все как и должно быть, текст находится. В spawn_event ищется текст, который будет всегда в строке, вне зависимости от исхода игрока. Лучше сделать поиск по возродился/умер.

sevent = r'from (\w+).+Игрок возродился'
pdeath = r'from (\w+).+Игрок умер'


И чтобы не экранировать бекслеши, есть специальный флаг r, который нужно ставить перед началом строки
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы
Greenway Global Новосибирск
от 150 000 ₽
SPA2099 Москва
До 100 000 ₽
HR Prime Москва
от 300 000 до 3 800 000 ₽