为什么芬德尔先生会这样?(python正则表达式)

2024-05-19 08:11:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我在pyhton做了一个小程序,在一个音乐网站上搜索并收集音乐数据。音乐的格式为[artist] - [music name] [music file format]。起初,我使用re.search查找某位艺术家(我使用regex是因为上面的音乐信息中还有一些其他字符和不规则的地方,查找艺术家的唯一指标是跟随艺术家的-

不知怎的,它不起作用了,所以我把它改成了re.findall,以防万一,但它仍然不起作用。因为我是python的初学者,所以我认为我出了什么问题,所以我编写了一些测试代码来研究出了什么问题。这就是我得到的

already imported re

当我更改x字符串(这将是音乐信息)并再次运行re.findall时,它给了我一个不同的结果(无)。我100%认为结果会是一样的。为什么会这样?这可能是我的原始代码re.serachre.findall不起作用的原因吗

我已经包括了代码以防万一。(用过的硒)

idx = 1
while True:
        try:
            hxp1 = "(//h3[@class='entry-title td-module-title']/a)[" + str(idx) + "]" 

            text = WebDriverWait(driver, 10).until(
                EC.presence_of_element_located((By.XPATH, hxp1)))

            # info = eg) 'Michael Jackson - Beat it [FLAC, MP3, WAV]'
            info = text.get_attribute('title') # get 'info' as string
            
            # ARTIST = eg) 'Michael Jackson'
            regex = ARTIST + ' - '
            match = re.findall(regex, info) # or use re.search
            
            # do something with 'match'...

            idx += 1

        except:
            # do something...
            break

Tags: 代码textreinfo信息searchtitle音乐
1条回答
网友
1楼 · 发布于 2024-05-19 08:11:10

看来你需要确保你匹配

将所有这些合并到您的正则表达式中:

Minami\s[\u002D\u058A\u05BE\u1400\u1806\u2010-\u2015\u2E17\u2E1A\u2E3A\u2E3B\u2E40\u301C\u3030\u30A0\uFE31\uFE32\uFE58\uFE63\uFF0D]\s

在您的情况下,如果您只需要支持en-dash/em-dash/hyhen字符和任何Unicode空白字符,您可以使用

Minami\s[-—–]\s

相关问题 更多 >

    热门问题