美文网首页
python3个人学习笔记-批量下载分析歌词2

python3个人学习笔记-批量下载分析歌词2

作者: 色拉丼 | 来源:发表于2017-11-28 17:04 被阅读0次

    我发现之前自己真是太愚蠢了没有搞清楚正则表达的各种用法。
    不同词语的筛选根本不用像re.sub('另一个想替换的内容','另一个替换后的内容',re.sub('想要替换的内容','替换后的内容',x))这样傻了吧唧地筛一层又一层……(受linux的pipe荼毒太深)
    正则表达中不同字符的or其实大家都知道是[abcde1234]这样的,但是不同词语的时候如果写[(remix)(acoustic)]的话匹配的并不是两个单词而是ra,rc,ro……以此类推。
    实际上你需要使用|把两个间隔开后再括上括号([]也行)才可以匹配。
    下面我们来看几个例子:

    import re
    str1='remix acoustic remixxxx acous remi 1234 reacu acoustic1'
    str2=re.sub('.*((remix)|(acoustic)).*','替换',str1)
    str3=re.sub('.*(remix)|(acoustic).*','替换',str1)
    str4=re.sub('(remix)|(acoustic)','替换',str1)
    str5=re.sub('[(remix)|(acoustic)]','替换',str1)
    print(str2)
    print(str3)
    print(str4)
    print(str5)
    ######输出结果
    #替换
    #替换xxx acous remi 1234 reacu 替换
    #替换 替换 替换xxx acous remi 1234 reacu 替换1
    #替换替换替换替换替换 替换替换替换替换替换替换替换替换 替换替换
    #替换替换替换替换替换替换 替换替换替换替换替换 替换替换替换替换 1234 替换替换替换替换替换 替换替换替换替换替换替换替换替换1
    

    所以我们为了筛选出更合适的不重复歌曲,就可以用这样写:

    if (re.search(".*((remix)|(acoustic)|(edition)|(feat\.)).*",links))==None:
    

    另外为了防止Taylor最多的词语是shake这种沙雕情况,这次换了一个算法:

    lyricswords=[]
    for lyric in lyric_dict.values():
        lyricswords=lyricswords + list(set(sorted(lyric.split(' ')))) #unique words in one song
    #the 300 most frequent words    
    ly_frenquency=Counter(sorted(lyricswords)).most_common(300)
    for item in ly_frenquency:
        print(re.sub(r"[()']",'',str(item)))
    

    原理很朴素,就是利用set的特性把这个有重复词语的list变成无重复的set,最后再变回list加入到dict中(其实第二步转换没有必要?)。
    那么我们来看一下结果吧!
    笑成傻吊了……都怪我觉得说唱歌手词汇更丰富一点,根本就是想太多了。
    麻辣鸡的歌词精选:

    aint, 33
    money, 20
    niggas, 18
    bitch, 17
    nicki, 17
    fuck, 17
    nigga, 16
    bitches, 15
    young, 14
    queen, 13
    ride, 13
    hit, 12
    ya, 12
    boy, 12
    ass, 10
    pussy, 9
    bout, 8
    hoes, 8
    rap, 8
    kiss, 7
    fucking, 7
    minaj, 5
    pink, 5
    red, 5
    

    然后再来看一下喇嘛

    nigga, 43
    shit, 41
    down, 40
    life, 39
    fuck, 37
    bitch, 31
    man, 31
    one, 31
    niggas, 31
    love, 30
    said, 30
    look, 30
    em, 29     #我觉得这可能是'em而不是真的emmmm吧毕竟英语里都没有这个说法
    take, 29
    feel, 28
    god, 27
    yeah, 27
    world, 27
    black, 27
    
    
    

    就真的也没好到哪里去,不过这么简单粗暴的概括语言并不能说明什么,仅供娱乐吧哈哈哈哈。
    ps说真的急需一个新project给我玩,可是一时半会儿想不出什么好玩的,想做的微博bot之类的又太超出我现有水平,苦恼.jpg

    相关文章

      网友评论

          本文标题:python3个人学习笔记-批量下载分析歌词2

          本文链接:https://www.haomeiwen.com/subject/qgevvxtx.html