• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
武纪亨
博客园    首页    新随笔    联系   管理    订阅  订阅
字符编码及文件操作

内容概要

  • 数据类型练习题

  • 字符编码

  • 文件操作

s1 = 'jason say hello hello hello big baby baby baby sb sb jason jason'
# 统计每个单词的个数
# 先定义一个空字典
data_dict = {}
# 先切割字符串
new_list = s1.split(' ')  # ['jason', 'say', 'hello', 'hello', 'hello', 'big', 'baby', 'baby', 'baby', 'sb', 'sb', 'jason', 'jason']
# 直接循环列表
# for i in new_list:
#     if i in data_dict:
#         data_dict[i] += 1
#     else:
#         data_dict[i] = 1
# print(data_dict)  # {'jason': 3, 'say': 1, 'hello': 3, 'big': 1, 'baby': 3, 'sb': 2}

# 有一个字符串‘ababaccdd’,如何统计每个字符出现的个数并组织成字典的形式展示出来如{‘a’:3}
# 先定义一个新字典
s1 = 'ababaccdd'
data_dict = {}
# 直接循环
for i in s1:
    if i in data_dict:
        data_dict[i] += 1
    else:
        data_dict[i] = 1
print(data_dict)  # {'a': 3, 'b': 2, 'c': 2, 'd': 2}

debug代码调试

1.先用鼠标左键在需要调试的代码左边点击一下(会出现一个红点)
2.之后右键点击debug运行代码

字符编码

# 只跟文本文件和字符串有关 与视频文件 图片文件等无关

# 什么是字符编码
	由于计算机内部只识别二进制 但是用户在使用计算机的时候却可以看到各式各样的语言字符
    字符编码:内部记录了人类字符与数字对应关系的数据

字符编码发展史

# 1.一家独大
	计算机最初是由美国人发明的 美国人为了能够让计算机识别英文字符
    	ASCII码:里面记录了英文字符与数字的对应关系
        	用一个字节来对应关系
            	"""
            		所有的英文字符和符号加起来其实不超过127
            		之所以使用八位是为了后续发现新的语言
            	"""
                必须记住的对应关系有以下两组
                	A-Z:65-90
                    a-z:97-122

# 2.群雄割据
	中国人
    	为了能够让计算机识别中文 我们需要发明另外一套编码表
        	GBK码:记录了英文中文与数字的对应关系
            	对于英文还是使用一个字节
                对于中文使用两个字节甚至是更多字节
                	"""
                		两个字节其实也不够表示出所有的中文
                		遇到生僻字可能需要更多位来表示
                	"""
	日本人
    	为了能够让计算机识别日文 也需要发明一套编码表
        	shift_JIS码:记录了日文英文与数字的对应关系
	韩国人
    	为了能够让计算机识别韩文 也需要发明一套编码表
        	Euc_kr码:记录了韩文英文与数字的对应关系

# 3.天下一统
	为了能够实现不同国家之间的文本数据能够彼此无障碍交流需要对编码统一
    	unicode(万国码)
        	统一使用两个及以上字符记录字符与数字的对应关系
            utf8(万国码的优化版本)
            将英文还是一个字节储存
            将中文使用三个字节或更多字节存储
            """现在默认使用的编码是utf8"""

字符编码实操

1.如何解决文件乱码的情况
	文件当初以什么编码编的 打开的时候就以什么编码器解

2.python解释器版本不同带来的编码差异
	python2.x内部使用的编码默认是ASCII
    	# 文件头
        	coding:utf8
        # 在python2中定义字符串前面要加一个小u
        	s = u'你'
	python3.x中 内部使用utf8
"""
	自定义文件模板内容
		file
			settings
				Editor
					file and cod templates
						python script
"""

3.编码与编码
	编码
    	将人类能够读懂的字符安装制定的编码转换成数字
	解码
    	将数字按照指定的编码转换成人类能够读懂的字符
	s = '每天不要想太多 学就完了 干就完了 奥利给!!'
    # 编码
    res = s.encode('utf8')
    print(res)
    print(res, type)  # bytes 在python中直接将该类型看成二进制数据即可
    # 解码
    res1 = res.decode('utf8')
    print(res1)

文件操作

1.什么是文件?
	文件其实是操作系统暴露给用户操作硬盘的快捷方式(接口)
2.代码如何操作文件
	关键字open()
    三步走:
    	1.利用关键字open打开文件
		2.利用其他方法操作文件
		3.关闭文件

"""
文件路径
	相对路径与绝对路径
	路径中出现了字母与斜杠的组合产生了特殊含义如何取消
"""


# res = open('a.txt', 'r', encoding = ('uft8'))
# print(res.read())
# res.close()  # 关闭文件释放资源
"""
	open(文件路径,读写模式,字符编码)
	文件路径与读写模式是必须的
    字符编码是可选的(有些模式需要编码)
"""

# with上下文管理(能够自动帮你close())
with open(r'a.tex', 'r', encoding = 'utf8') as f:
    print(f.read())

文件读写模式

"""
补全语法结构 没有实际含义
	pass
	...
"""

r	只读模式(只能看不能改)
	# 路径不存在:直接报错
    # with open(r'b.txt', 'r', encoding = 'utf8') as f:
    # 	pass
    # 路径存在
    # with open(r'a.txt', 'w', 'encoding = 'utf8') as f:
    # 	print(f.read())  # 读取文件内所有的内容
    	# f.write('123')  # 写文件内容
        
w	只写模式(只能写不能看)
	# 路径不存在:路径不存在自动创建
    # with open(r.('b.txt', 'w', encoding = 'utf8')) as f:
    # 	pass
    
    # 路径存在:1.会先清空文件内容   2.在执行写入操作
    with open(r'a.txt', 'w', encoding = 'utf8') as f:
        # f.read()
        f.write('hello world!\n')
        f.write('hello world!\n')
        f.write('hello world!\n')

a	只追加模式(追加内容)
      # 路径存在:1.不会清空文件内容  2.在文件内容基础上新增写入内容
    with open(r'a.txt', 'a', encoding=('utf8')) as f:
        f.write('456')  
      # 路径不存在:1.路径不存在自动创建  2.可以写入内容
    with open(r'a.txt', 'a', encoding=('utf8')) as f:
        f.write('123')

posted on 2021-11-10 19:07  Henrywuovo  阅读(76)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3