• python切分TXT的句子到Excel(复制可用)——以及python切分句子遇到的问题汇总


    完整代码

    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()
    
    
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69

    时间转化和提取

    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)
    
    • 1
    • 2
    • 3
    • 4
    • 5

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

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

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

  • 相关阅读:
    芝浦工业大学利用 NetApp 提供的多层 AI 驱动型安全解决方案抵御网络攻击
    手把手实例教你短视频定位,人设和变现方式,学会节省半年摸索时间
    c++ reference_wrapper源码注释
    Linux命令之shred命令
    [python] pytest
    全网最强 JVM 来袭!(至尊典藏版)
    【AD9361 数字接口CMOS &LVDS&SPI】B 并行数据之CMOS 续
    Nacos与Eureka的异同
    使用 Sa-Token 完成踢人下线功能
    mjpg-streamer 使用入门
  • 原文地址:https://blog.csdn.net/qq_41517071/article/details/127837347