Python学习之文本处理小任务

背景

Text Mining课程的group work我们小组打算做一个基于歌词的情感分析,然后要对我们下载的歌词做一下处理,去掉中文翻译的部分以及前面的时间轴,将处理后的歌词文本保存到txt中,一行为一首歌的歌词。

原始歌词格式

[00:00.00] 作曲 : Alison Sudol
[00:01.00] 作词 : Alison Sudol
[00:14.539]Your fingertips across my skin
[00:14.539]你的指尖轻滑过我的肌肤
[00:19.577]The palm trees swaying in the wind, images
[00:19.577]棕榈树在风中翩翩起舞

可以看到,下载下来的歌词是由一行英文,一行中文组成,并且以[00:00:00]这样的时间格式开头,我们要做的是保留英文的部分。

文本处理

使用split以“]”为界限将一行文本分成两个部分,后半部分即为歌词部分

lyrics=line.split(']')
single_lyrics=lyrics[-1]

然后判断是否是中文

zhPattern=re.compile(u'[\u4e00-\u9fa5]+')
match=zhPattern.search(lyric)
if not match:
    print(lyric)

完整代码

import sys
import re
import glob

txt_filenames=glob.glob('D:/lyrics/sad/*.txt')
zhPattern=re.compile(u'[\u4e00-\u9fa5]+')
fw=open(r'D:/lyrics/sad.txt',mode='a',encoding='utf-8')
for filename in txt_filenames:
    f=open(filename,mode='r',encoding='utf-8')
    while True:
        line=f.readline()
        if not line:
            break
        lyrics=line.split(']')
        single_lyrics=lyrics[-1]
        single_lyric=single_lyrics.split('\n')
        lyric=single_lyric[0]
        match=zhPattern.search(lyric)
        if not match:
            print(lyric)
            fw.write(lyric)
            fw.write(' ')
    f.close()
    fw.write('\n')
fw.close()

你可能感兴趣的:(python)