Поиск и разбиение строк с помощью специальных символов в Python - PullRequest
0 голосов
/ 03 февраля 2019

Я проверяю расписание на сайте Medmar и хотел бы разделить маршрут от:

"Pozzuoli » Ischia"
"Pozzuoli - Procida" 

до

"DEPARTURE PORT": 'Pozzuoli'
"ARRIVAL PORT": 'Ischia'
"DEPARTURE PORT": 'Pozzuoli'
"ARRIVAL PORT": 'Procida'

Я пробовалразделение текста из списка двумя различными способами в зависимости от того, имеет ли он разделитель «» или «-» между двумя портами.Сначала я ищу «» или «-» и делю строку соответственно.По какой-то причине я получаю повторную ошибку при поиске

re.error: unterminated character set at position 0

Код:

def port_name_regex(port_name, index):
     if re.search("[^\x00-\x7f",port_name):
        port_name = departure_port = re.split("[^\x00-\x7f]",port_name,1)[index].capitalize
        return port_name
     else:
        port_name = re.split("\w",port_name,1)[index].capitalize
        return port_name

medmar_live_departures_table = list(soup.select('li.tratta'))                
for li in medmar_live_departures_table:
    next_li = li.find_next_sibling("li")
    while next_li and next_li.get("data-toggle"):
        if next_li.get("class") == ["corsa-yes"]: 
            medmar_live_departures_data.append({  
            'DEPARTURE PORT': port_name_regex(li.text, 0),
            'ARRIVAL PORT': port_name_regex(li.text, -1),
            'DEPARTURE TIME': next_li.strong.text,
            'FERRY TYPE': "Traghetto",    
            'STATUS': "Active", 
            'OTHER INFO': "Next departure"  
           })
        elif next_li.get("class") == ["corsa-no"]:  
            medmar_live_departures_data.append({
                'DEPARTURE PORT': port_name_regex(li.text, 0),
                'ARRIVAL PORT': port_name_regex(li.text, -1),
                'DEPARTURE TIME' : next_li.strong.text,
                'FERRY TYPE': "Traghetto",  
                'STATUS': "Cancelled" 
            })
            next_li.find_next_sibling("li")
        else:    
            medmar_live_departures_data.append({
                'DEPARTURE PORT': port_name_regex(li.text, 0),
                'ARRIVAL PORT': port_name_regex(li.text, -1),
                'DEPARTURE TIME' : next_li.strong.text,
                'FERRY TYPE': "Traghetto",
                'STATUS': "Active"
            })
        next_li = next_li.find_next_sibling("li")

Как мне решить эту проблему?

1 Ответ

0 голосов
/ 04 мая 2019

Я столкнулся с той же ошибкой и решил ее, заменив скобки и круглые скобки следующим образом:

re.sub('\(|\)|\]|\[', '', word.lower())

Ошибка указывает на это (неопределенный набор символов) - парены / скобки открываются и закрываютсяустановить, предполагая, что один отсутствует.Проверьте свои данные для этих персонажей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...