【问题标题】:Python findall - ignoring some resultsPython findall - 忽略一些结果
【发布时间】:2019-04-20 12:58:58
【问题描述】:

我正在做一个程序,将来会解释 YouTube 视频的搜索结果。我的 sn-p 版本的代码旨在从歌曲标题中提取艺术家的假名。

示例

我有一个保存在字符串中的标题:“Drake ft. DJ Khalid,Nicki Minaj - 'Why Futures'(官方视频)” 我想忽略“Futures”这个词来表示 findall 函数(因为它是主打歌的一部分,它不是说唱歌手/艺术家的昵称),它位于 ' 和 " 字符之间。 此外,我对“DJ Khalid”有疑问,因为 findall 返回说唱歌手的两个昵称(DJ Khalid 和 Khalid),而不是一个昵称(应该是同一个 DJ Khalid)。

代码

edit_string = "Drake ft. DJ Khalid, Nicki Minaj - "Why Futures" (Official video)"
rapper_name = open_csv() #list of rapper's nicks

new_title = []
for rapper_name in rappers_list:
  yer = ''.join(rapper_name)
  if re.findall(yer.lower(),edit_string.lower()): new_title.append(yer)
new_title = ' x '.join(new_title)
print(new_title)
edit_string = new_title

结果

实际结果是:Drake x Khalid x Nicki Minaj x DJ Khalid x Future(因为不幸的是,在我的说唱歌手名单中,我有一个叫做 Future 的人)

应为:Drake x DJ Khalid x Nicki Minaj

如何以最佳方式(最佳优化)做到这一点?提前感谢您的所有帮助。

【问题讨论】:

  • 可能需要将wordbounds \br 选项一起使用。你的名单上有多少位艺术家?其次,你如何处理像“DJ Khalid”这样的事情?第三,'我一直在冷静,不要开始找我麻烦'......(我不得不)
  • 我有大约 300 名说唱歌手。不幸的是,将“DJ Khalid”(忘记了他 )添加到我的列表中后,我遇到了另一个问题:更新字符串:edit_string = "Drake ft. DJ Khalid, Nicki Minaj - "Why Futures" (Official video)" 实际结果是:Drake x Khalid x Nicki Minaj x Future x DJ Khalid:/
  • yer替换为yer = '(?i)\\b'+str(rapper_name)+'\\b'....并将new_title.append(yer)替换为new_title.append(rapper_name)
  • 不起作用(你的值示例 = (?i)\b['Freddie Gibbs']\b),我也在测试 b'string' 作为字节/编码,结果是一样的
  • 您在 b 的字体中缺少一个额外的 \ 。复制并粘贴我所拥有的。是\\b

标签: python regex python-3.x findall


【解决方案1】:

感谢@FailSafe 的模式。 OP,这个答案证明了@FailSafe 的建议确实是正确的:

import re

edit_string = "Drake ft. DJ Khalid, Nicki Minaj - "Why Futures " (Official video)"
rappers_list = ['Drake', 'DJ Khalid', 'Nicki Minaj', 'Future']#open_csv() #list of rapper's nicks

new_title = []
for rapper_name in rappers_list:
    yer = '(?i)\\b'+str(rapper_name)+'\\b'
    if re.findall(yer.lower(), edit_string.lower()): 
        new_title.append(rapper_name)
new_title = ' x '.join(new_title)
print(new_title)
edit_string = new_title  

Output: 
## Drake x DJ Khalid x Nicki Minaj  

【讨论】:

  • 求大神帮助
猜你喜欢
  • 1970-01-01
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
  • 2021-05-27
  • 2015-03-22
  • 2016-07-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多