习题23 字符串,字节串和字符编码

学习目标:

ex23.py

utf-8


学习内容:

import sys
script, encoding, error = sys.argv
#解包

def main(language_file,encoding,errors):
    line = language_file.readline()
#定义main函数 函数第一件事读取一行
    if line:
        print_line(line,encoding,errors)
        return main(language_file,encoding,errors)
#if如果读取行获得内容,则为真,9和10行会执行,否则跳过
#调用了另一个函数来实际打印这一行;第10行调用函数自己只不过是……跳到函数顶端再运行一次而已
def print_line(line,encoding,errors): #定义 print_line 函数,它实际上是对 languages.txt 中每一行进行编码
    next_lang = line.strip() #把每行结尾的\n 删掉而已
    raw_bytes = next_lang.encode(encoding,errors = errors)
#我终于取到了 languages.txt 中的语言, 把它编码成原始字节。
#next_lang 变量是一个字符串,要获取原始字节串,我必须调用.encode()来编码字符串
#编码方式和处理错误的方式传入encode()函数
    cooked_string = raw_bytes.decode(encoding,errors = errors)
#raw_bytes 就是字节串,所以我在上面调用了.decode(),从而得到一个 Python 字符串
    print(raw_bytes, "<===>", cooked_string)
#二者打印出来

languages = open("languages.txt",encoding = "utf-8")
#函数定义完成,现在打开languages.txt文件
main(languages,encoding,error)
#脚本的结尾,执行了 main 函数,带了需要的所有参数,然后循环开始
#代码会跳到第 5 行 main 函数定义的顶端,然后到第 10 行,main 函数会再被调用一次,然后持续循环
# 8 行的 if 会阻止循环不停运行下去

学习时间:

2023.4.12


学习产出:

ex23.py

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值