【个人笔记】python

Title: Python学习

1 基本用法

输入输出

格式化输出

  • python的格式化输出

    str1 = "num: {}".format(123)
    str1 = "num: {:<44}".format(123)
    str1 = "num: {:^20}".format(123)
    
    • {}.format():占位符、格式控制语句(替换{}的内容);

    • {:<44}{:^20}<表左对齐、>表右对齐,数字是占位符的宽度;

      此处{:<44}表示一个宽度为44的左对齐占位符,{:^20}表示一个宽度为20的居中对齐占位符。

数组

创建

  • 创建指定大小

    # 一维
    a = [1] *10 ;		# 大小位10,初始化全1
    # 二维
    a = [ [1 for i in range(3)] for h in range(4) ]
    # 大小4行3列的二维矩阵
    # a= [ [1,1,1,], [1,1,1,], [1,1,1], [1,1,1] ]
    

添加新元素

  • 先创建空间再添加

    list = 	[1, 2, 3]
    list.append("")		# 不append直接list[4]会报IndexError
    list[4] = 4
    

    错误的方式:直接索引“尾部溢出index”来添加新元素 ❌

列表推导式

  • 英文称呼:List Comprehension

  • 语法B = [a for a in A if a]

    • 含义:对于列表A中的每个元素a,如果a的值为真(非零、非空、非None),则将其添加到新列表中。新列表为B.
    • 优点:比普通for语句在py中运行的快。因为推导式是编译到C语言级别,而普通for语句是解释型。
    • 缺点:更耗内存。

字符串

  • 串拼接

    注意:串和数字拼接,必须手动把数字变量用str()转为字符,否则会报error。

  • 串分割

    list = str1.split(' ')可以化字符串为列表(按间隔符' ')。

文件读写

常规读/写

  • 写文件

    filename = '???'
    with open(filename, 'w') as fp:
        fp.write("...str...")
    

文件指针操作

  • file.seek(offset, 方向用法

    • 细节见此ref:文件操作中file.seek()方法
    • offset的单位:字符数(字节)
    • size = file.tell() 返回文件指针的当前位置,单位-字符数(字节)

    上述单位,不以open("xxx", 'r')还是rb为转移.

    • file.seek()的使用注意事项

      若file是以'r'打开的,则不能随意用.seek(offset数, 0/1/2),因为按字符打开的文本,其文本的编码字节与字符的内容没有一一对应的关系,用.seek()就没法精确按数量移动文件指针(除非调用.tell()函数返回offset的值),用自定义的数值进行.seek()跳转,会出现随机、未知的错误.

      我就出现了使用 file.seek(负数, 2) 的报错:io.UnsupportedOperation: can’t do nonzero end-relative seeks.

      故用.seek()函数时,最好用'rb'的二进制比特流来打开文本。

  • 从文本尾部开始读取,检索关键字

    • 文本必须以二进制流的形式读取、再用seek()函数跳转指针位置、读取比特流后得编码。

    • Demo

      with open(filename, 'rb') as file:
          file.seek(-20000, 2)
          content = file.read()
          str_content = content.decode('utf-8', errors='ignore')
          if 'fatal' in str_content:
              return 1
          else:
              return 0
      
      1. 将文件以只读、二进制的形式打卡

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值