python - 在Python中搜索和分割带有特殊字符的字符串

标签 python regex web-scraping

我正在刮Medmar website的时间表并想分割路线 来自:

"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")

如何解决这个问题?

最佳答案

我遇到了同样的错误,我通过替换括号和圆括号解决了它,如下所示:

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

错误提示(未终止的字符集) - 括号/括号位于开闭集中,表明缺少一个。检查您的数据中是否有这些字符。

关于python - 在Python中搜索和分割带有特殊字符的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54505649/

相关文章:

python - 在 Mac 和 Linux 上将 Python 用于 Wacom 数位板

java - 我所需模式的正则表达式是什么

python - Scrapy - 删除列表输出中的 html 标签

带可选组的 p​​ython 正则表达式

python - 使用 Selenium 在 Python 中抓取由 javascript 注入(inject)的图像

python - 无法摆脱不需要的输出

python - _curses.error : addstr() returned ERR

python - 如何过滤掉Python中低于特定频率的二进制类列?

python - 强制开发人员使用预定义的属性列表作为函数参数

javascript - 代码栅栏 Markdown 的正则表达式。简单吗?