菜鸟笔记
提升您的技术认知

python切分TXT的句子到Excel(复制可用)

完整代码

import jieba.analyse

import jieba.posseg as pseg
from wordcloud import WordCloud
import xlsxwriter
# encoding=gbk
import xlsxwriter

f = open('E:/data/xieyangteng/review.txt', 'r', encoding='utf-8')
s = f.read()
print(type(s))


# print(s)
def cut_sentences(content):  # 实现分句的函数,content参数是传入的文本字符串
    # 这个结束符号可以加中文的 ,   但是暂时没有加
    end_flag = ['?', '!', '.', '?', '!', '。']  # 结束符号,包含中文和英文的
    content_len = len(content)
    sentences = []  # 存储每一个句子的列表
    tmp_char = ''
    for idx, char in enumerate(content):
        tmp_char += char  # 拼接字符
        if (idx + 1) == content_len:  # 判断是否已经到了最后一位
            sentences.append(tmp_char.strip().replace('\ufeff', ''))
            break
        if char in end_flag:  # 判断此字符是否为结束符号
            # 再判断下一个字符是否为结束符号,如果不是结束符号,则切分句子
            next_idx = idx + 1
            if not content[next_idx] in end_flag:
                sentences.append(tmp_char.strip().replace('\ufeff', ''))
                tmp_char = ''

    return sentences  # 函数返回一个包含分割后的每一个完整句子的列表


sentence_list = cut_sentences(s)

# 导入Excel
# 一:创建工作簿
workbook = xlsxwriter.Workbook('xieyangteng.xlsx')  # 创建一个excel文件

# 二:创建工作表
worksheet1 = workbook.add_worksheet('test-sheet1')  # 在文件中创建一个名为test-sheet1的sheet,不加名字默认为sheet1
worksheet2 = workbook.add_worksheet()  # Sheet2
worksheet3 = workbook.add_worksheet('test-sheet2')
worksheet4 = workbook.add_worksheet()  # Sheet4

# 三:设置单元格的值


worksheet1.write('A1', '对话语句')  # 在A1单元格写上语句
worksheet1.write('B1', '分类的类别')  # 在B1单元格写上要分类的label

# 使用行列方式,下标从0开始
j = 1
for i in sentence_list:
    worksheet1.write(j, 0, i)  # 第3行第1列(即A3) 写入100

    worksheet1.set_column(j, 0, 120)
    worksheet1.set_column(j, 1, 20)
    print("success!")
    j += 1

workbook.close()





时间转化和提取

00:01:30,050 --> 00:01:44,280
这样一个字符串,如何提取出时间序列。
泪目终于找到我要的代码了开心哭了。

这一串是正则匹配时间提取的核心技术。

各种对象类型转换

参考这个

时间序列

现在成功切分出了
start time 和 end time
start time 00:00:00
end time 00:00:02
格式是这个样子的,
但是 如何计算
参考正则匹配时间序列:
可以学学人家的代码写作思路。

类属性

初始化属性和不初始化属性的区别,
可以在这篇博客 体会一下

数据转换

提取的转为时间的字符串,保存为float 保留

a = 12.3456
a1 = round(a,2) # 保留小数点后两位
a2 = round(a,3) # 保留小数点后三位
print(a1)
print(a2)

时间分开合并的时候有报错

int() argument must be a string, a bytes-like object or a number, not 'built

我这打印过了 都是 str类型00:00:00
分了三个 每个都是str类型
先转成 int()之后在计算,成功解决!