python - 在python中搜索和分割带有特殊字符的字符串
问题描述
我在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")
我该如何解决这个问题?
解决方案
我遇到了同样的错误,我通过替换括号和括号来解决它,如下所示:
re.sub('\(|\)|\]|\[', '', word.lower())
错误提示(未终止的字符集) - 括号/括号出现在一个开放和封闭的集合中,表明缺少一个。检查这些字符的数据。
推荐阅读
- java - 如何修复命令提示符中的 java.lang.NoClassDefFoundError?
- attributes - 如何将不推荐使用的属性应用于 using 语句
- javascript - 每次引用变量时如何执行布尔比较
- scrapy - 强制关闭爬虫蜘蛛
- artifactory - jfrog cli 只获取工件的名称?
- python - 为什么用字符串和 timedeltas 转置 DataFrame 会转换 dtype?
- geolocation - AMP by Example 的基于地理位置的同意流程是否存在故障?
- jquery - 动态创建选项卡时如何将选项卡设置为活动状态?
- javascript - 扩展包装组件的 props 的最佳实践
- c++ - 如何声明从 QApplication 派生的 Qt 类并覆盖通知函数?