首页 > 其他分享 >6.文本处理

6.文本处理

时间:2024-04-09 19:47:43浏览次数:14  
标签:count 文件 encoding data 文本处理 print open

【一】深浅拷贝

1)浅拷贝

  • 复制对象的一层内容,若包含可变数据,则拷贝对象与原对象共享这些可变数据类型的引用

  • 即原对象中的可变数据类型进行修改操作时,拷贝的对象也会受到影响。

    import copy
    
    # 原对象
    count = [1, [3, 4]]
    # 浅拷贝
    count_1 = copy.copy(count)
    count.append(2)
    print(count)  # [1, [3, 4], 2]
    print(count_1)  # [1, [3, 4]]
    count[1].append(5)
    print(count)  # [1, [3, 4, 5], 2]
    print(count_1)  # [1, [3, 4, 5]]
    

2)深拷贝

  • 创建一个完全独立的新对象,包括所有嵌套对象

  • 对于原对象的修改不会印象深拷贝的对象

    import copy
    
    # 原对象
    count = [1, [3, 4]]
    # 浅拷贝
    count_1 = copy.deepcopy(count)
    count.append(2)
    print(count)  # [1, [3, 4], 2]
    count[1].append(5)
    print(count)  # [1, [3, 4, 5], 2]
    print(count_1)  # [1, [3, 4]]
    

【二】垃圾回收机制

  • 又称GC机制,是python解释器自带的一种机制
  • 专门回收不可用的变量所占的内存空间

1)堆、栈的概念

  • 栈区:变量名和值内存地址关联的区域
  • 堆区:变量值存放的区域

【三】垃圾回收机制原理

  • 引用计数为主,标记清除,分代回收为辅

1)引用计数

  • 变量值被变量名指定的次数

2)标记清除

  • 当一个变量值被引用的时候,Python自带的垃圾回收机制会定期扫描

  • 若此变量值被引用,则不管

  • 若此变量值未引用,则标记

3)分代回收

  • 新生代(young generation):
    • 包含了大部分新创建的对象,其存活时间较短。
  • 青春代(youth generation):
    • 包含了已经经历过垃圾回收一次的新生代对象,存活时间较长。
  • 老年代(old generation):
    • 包含了已经经历过多次垃圾回收的对象,存活时间较长。

【四】小整数池

  • 小整数池的范围是[-5,256]
  • python对这些数值已经提前创建好了内存空间,即使多次重新定义也不会在重新开辟新的空间,其内存id不会改变

【五】字符编码

1)数据存放位置

  • 软件启动前数据存放于磁盘中

  • 软件启动后数据从磁盘中写入内存,cpu从内存中取出指令并执行

2)字符编码概念

  • 计算机只能识别二进制,字符编码指将人类的字符转义成二进制

3)发展史

1.一家独大(ASCII)

  • 只有英文字符与数字的对应关系
    • A-Z : 65-90
    • a-z : 97-122
    • 0-9 : 48-57

2.诸侯割据(ASCII/GBK/Shift_JIS)

  • 各国有着不同的编码表
    • 中国:GBK
    • 日本:Shift_JIS

3.一统天下(unicode)

  • 兼容万国字符
    • 美国人--ascii ---> unicode ----> GBK ---> 中文

4)编码与解码

1.编码(.encode())

name = '晓雾'
print(name.encode('utf8'))
# b'\xe6\x99\x93\xe9\x9b\xbe'

2.解码(.decode())

name = b'\xe6\x99\x93\xe9\x9b\xbe'
print(name.decode('utf8'))
# 晓雾

5)utf-8的诞生

  • 多国字符—√—>内存(unicode格式的二进制)—√—>硬盘(utf-8格式的二进制)

  • utf8mb4可以存储表情

【六】文本处理

1)文件操作的基本流程

1.open语句

  • 需手动关闭
f = open('0.text', 'r', encoding='utf-8')
data = f.read()
f.close()

2.with open语句

  • 会自动关闭
with open('0.text', 'r', encoding='utf8') as f:
    data = f.read()

2)文件的操作模式

1.读模式(r)

  • 文件不存在会报错
  • 指针跳到开头
with open('0.text', 'r', encoding='utf8') as f:
    data = f.read()
print(data)
# 文件内的所有内容

2.覆盖写模式(w)

  • 文件不存在会创建出来
  • 文件存在会清空文件里的内容
  • 可连续写入
with open('0.text', 'w', encoding='utf8') as f:
    f.write(内容)

3.追加写模式(a)

  • 文件不存在会创建出来
  • 文件存在指针跳到结尾继续写入
with open('0.text', 'a', encoding='utf8') as f:
    f.write(内容)

4.+模式(可读可写)

  • r+, w+ ,a+ :可读可写

5.b模式(二进制模式)

  • wb,rb
  • 读写文件都是以bytes/二进制为单位的
  • 可针对所有文件,不要指定参数

3)文件的操作方式

1.读模式

  • f.read()
    • 读取所有内容,执行完该操作后,文件指针会移动到文件末尾
  • f.readline()
    • 读取一行内容,光标移动到第二行首部
  • f.readlines()
    • 读取每一行内容,存放于列表中

2.写模式

  • f.write()
    • 一次性全部写入
  • f.writelines()
    • 逐个元素进行写入

3.判断文件

f.readable()	#文件是否可读
f.writable()	#文件是否可读
f.closed	#文件是否关闭
f.encoding	#如果文件打开模式为b,则没有该属性
f.flush()	#立刻将文件内容从内存刷到硬盘
f.name()	#获取文件的名字

4)主动控制文件内指针移动

1.read方法

with open('0.text', 'r', encoding='utf8') as f:
    data = f.read(参数)
print(data)
# 文件内参数之后的内容

2.seek移动指针

  • 模式0
    • 以开头作为参照移动
  • 模式1
    • 以当前位置作为参照移动
  • 模式2
    • 以末尾作为参照移动
with open('0.text', 'r', encoding='utf8') as f:
    f.seek(_,0)
    data = f.read(参数)
print(data)
  • 字母 数字占一个字节,汉字占3个字节

标签:count,文件,encoding,data,文本处理,print,open
From: https://www.cnblogs.com/Mist-/p/18124642

相关文章

  • 文本处理语言awk基本语法
    文章目录运算符流程控制函数封装awk语言初步AWK是一种强大的文本处理和数据解析工具,它支持丰富的运算符和流程控制语句。运算符方面,AWK提供了基本的算术运算符(+,-,*,/,%,^,**)和赋值运算符(+=,-=,*=,/=,%=,^=),以及递增递减运算符(++,--,a++,a–)。此外,AW......
  • 文本处理工具命令
    文本处理工具命令grep         cut         sort        uniq        wc        paste        tr     split1、grep命令 grep是一个在linux和Unix操作系统中常用的命令行工具,用于在文本文件......
  • Linux系统——AWK文本处理拓展
    目录一、分析Nginx访问日志二、文件差异对比1.实验环境2.找出b文件在a文件相同记录3.找出b文件在a文件不同记录三、合并两个文件1.生成实验环境2.将a文件合并到b文件3.将a文件相同IP的服务名合并四、将第一列合并到一行五、字符串拆分六、统计出现的次数七、获取......
  • 文本处理
    目录文本处理一、文件打开与关闭1.os.open打开2.os.OpenFile打开(推荐)(1)flag参数(2)prem参数(文件权限)3.ioutil.ReadFile打开二、文件读取1.File.Read普通读取文件(1)简单读文件(2)循环读取文件2.bufio读取文件(1)分块读取(2)按行读取i.reader.ReadLine()ii.reader.ReadString('\n')ii......
  • Linux文本处理三剑客---grep
    1.什么是grep和egrep示例grep[options]pattern[file...]其中,pattern表示要搜索的模式,可以是简单的文本字符串,也可以是正则表达式。file指定要在其中进行搜索的文件,如果省略file,则默认从标准输入中读取数据。egrep其实就是grep的一个变种,它支持更多的正则表达式语法。egre......
  • 轻松掌握 Linux 文本处理三剑客:grep、awk 和 sed 实战演练
     Shell脚本语言编程有哪些优势呢?Shell脚本语言的优势在于能够以最轻量级最快捷的速度处理Linux操作系统偏底层的业务。比如软件的自动化安装、更新版本,监控报警,日志分析等。虽然其他高级编程语言如PHP、Python、Ruby等语言也能做到,但是效率和开发成本上会大打折扣,所谓“......
  • 正则表达式与正则可视化工具:解密文本处理的利器
    引言在计算机科学和软件开发领域,正则表达式是一种强大而灵活的文本处理工具。然而,对于初学者来说,正则表达式的语法和规则可能会显得晦涩难懂。为了帮助初学者更好地理解和学习正则表达式,正则可视化工具应运而生。本文将介绍正则表达式的基本概念、语法和应用,并介绍如何利用正......
  • RHCE第三周 文本处理工具
    一:文本查看工具cat,tac,more,less,head,tail,wc这些命令1:cat和tac命令cat这个命令就是从头到尾的显示完整的文件内容,tac就是从尾到头的显示文件内容选项:-n:就是可以显示行数和文件内容-A:这个就是显示文件的不同点,可以看得到空格,这个非常的重要,就是在后面写shell脚本或者剧本的......
  • 【AI 实战】Text Processing and Word Embedding 文本处理以及词嵌入原理和代码实例讲
    文章目录【AI实战】TextProcessingandWordEmbedding文本处理以及词嵌入原理和代码实例讲解TexttoSequenceStep1:TokenizationStep2:BuildDictionaryStep3:One-HotEncodingStep4:AlignSequencesTextProcessinginKerasWordEmbedding:WordtoVectorHowtom......
  • 大数据分析与可视化 之 实验08 Pandas字符串和文本处理
    实验08Pandas字符串和文本处理实验学时:2学时实验类型:验证实验要求:必修一、实验目的学会正确使用常见的字符串函数如:len()、find()、strip()、replace()、contains()函数。解决实际数据中的字符串和文本处理问题。二、实验要求使用常见的字符串函数(如:len()、find()、s......