“一个不成熟男子的标志是为了某种事业英勇地死去,一个成熟男子的标志是为了某种事业卑微地活着。”

                                                                                                     -------<麦田里的守望者>

小的时候总以为自己长大会变成很厉害的人。后来知道自己没希望了,那就变成成功圆满的人也可以啊。
再后来觉得,即使普通,只要度过快乐幸福的人生就好。
再后来,发现只要活着就行。对自己提出要求,只会令人痛苦。

                                                                                              -----------作者:崇九

知乎上看到的,不管如何,我被生了下来,家境也不优越,父母仍需奔波,已然不可能孑然一生, 第一次读<麦田里的守望者>在初中,感谢那些年无知的自我,不会过早发现世间的秘密.   ^_^,加油,生活.   2019.9.1

第一章,正则表达式

  1. 简介,动机:

  2. 特殊符号和字符

    1. 使用择一匹配符号匹配多个正则表达式模式,(|)
    2. 匹配任意单个字符(.)
    3. 从字符串起始或者结尾或者单词边界匹配。(^ $)
    4. 创建字符集,([])
    5. 限定范围与否定,([^], -)
    6. 使用闭包操作符实现存在性和频数(*,+,?)
    7. 使用圆括号指定分组
    8. 表示字符集的特殊字符(\w \d)
    9. 扩展表示法
  3. 正则表达式和Python语言

    1. re模块,核心函数和方法
    2. 使用compile函数编译 正则表达式。
    3. 匹配对象已及group()和groups()
    4. 使用match()方法匹配字符串
    5. 使用search()在一个字符串中查找模式(搜索与匹配的对比)。
    6. # from 包名 import 模块名
      import re
      # match(模式,字符串),开始位置匹配
      m = re.match('foo','foo')
      # 如果 m 不为空
      if m is not None: print(m.group()) #foo
      m = re.match('foo','lrl')
      if m is not None: print(m.group()) #
      m = re.match('foo', 'food on the table')
      print('长串:'+m.group()) #foo
      m = re.match('foo', 'sefoo')
      if m is not None:print(m.group()) #
      #search,任意位置搜索。
      m = re.search('foo','sefoo' )
      if m is not None:print(m.group()) # foo
    7. 匹配多个字符
    8. 匹配任何单个字符
    9. 创建字符集
    10. #匹配多个字符串
      bt = 'bat|bet|bit'
      bt = re.compile(bt)
      m = re.match(bt,'bat')
      if m is not None: print(m.group())
      m = re.match('bat|bet|bit', 'bat')
      if m is not None:print(m.group())
      #匹配任何单个字符
      anyand = '.end'
      m = re.match(anyand, 'bend')
      if m is not None:print(m.group())
      # end
      m = re.match(anyand, 'end')
      if m is not None:print(m.group())
      #
      m = re.match(anyand, '\nend')
      if m is not None:print(m.group())
      #
      m = re.search('.end', 'the end.')
      if m is not None:print(m.group())
      # end
      #搜索小数点
      patty= '3.14'
      pi_patt = '3\.14'
      m = re.match(pi_patt, '3.14')
      if m is not None:print(m.group()) #3.14
      m = re.match(patty,'3014')
      if m is not None:print(m.group()) #3014#创建字符集[]
      m = re.match('[li][rui][long]','lrl')
      if m is not None:print(m.group()) #lrlm = re.match('[a-z]+','aaaa' )
      if m is not None:print(m.group()) #aaaa
    11. 重复,特殊字符及分组
    12. 重复,特殊字符以即分组
      m = re.match(patt, 'liruilong@qq.com')
      if m is not None: print(m.group()) #liruilong@qq.com
      m = re.match(patt, 'lirui@ong.sd.com') #lirui@ong.sd.com
      if m is not None: print(m.group())m = re.match('\w\w\w-\d\d\d', 'abc-xyz') #
      if m is not None: print(m.group())x = 1;
      y = 2;
      #变量的直接转换
      (x,y) =( y,x)
      print(x)
      print(y)m = re.match('(\w\w\w)-(\d\d\d)','abc-123')
      #返回匹配串
      if m is not None: print(m.group())
      #返回子组
      if m is not None:print(m.group(1))
      if m is not None:print(m.group(2))
      if m is not None: print(m.groups())
      #group()通常用于以普通的方式显示所有的匹配部分
      #groups()通常获取一个包含所有匹配子字符串的元组。
      m = re.match('(ab)', 'ab')
      def pring(m):print('输出group()')if m is not None: print(m.group())print('输出groups()+以元组方式输出:')if m is not None: print(m.groups())print("输出group(i)")if m is not None: print(m.group(1))
      pring(m)
      m = re.match("(a)(b)", 'ab')
      pring(m)
    13. 匹配字符串的起始和结尾已及单词边界
    14. #匹配字符串的起始位置和结尾已及单词边界
      def pri(m):if m is not None: print(m.group())m = re.search('^The',"The end.")
      pri(m)
      m = re.search('^The',"sThe end.") # 无值
      pri(m)
      #\b用于匹配单词边界。\B用与不匹配边界。
      m = re.search(r'\bthe', 'bite the dog')
      pri(m)
      m = re.search(r'\bthe' , "btthe")#无值
      pri(m)
      m = re.search(r'\Bthe', 'bithe dog') #the
      pri(m)
      
    15. 使用findall()和finalter()查找每一次出现的位置
    16. #使用findall()和findlter()查找每一次出现的位置
      #findall()返回一个数组,l类似一search
      def prfin(m):print(m)
      m = re.findall('car', 'car')
      prfin(m)
      m = re.findall('car','scar')#['car']
      prfin(m)
      m = re.findall('car' , 'carry the bacar the car')#['car', 'car', 'car']
      prfin(m)
      s = "This and that."
      #re.I忽略大小写 r'意思为不转义
      m = re.findall(r'(th\w+) and (th\w+)', s, re.I) #[('This', 'that')]
      print(m)
      print("finditer的使用方式!!")
      print("finditer的使用方式!")
      m = [g.groups() for g in re.finditer(r'(th\w+) and (th\w+)', s, re.I)]
      print(m)
    17. 使用sub()和subn()搜索和转换
    18. #使用sub()和subn()搜索与替换,将正则表达式所匹配的进行替换。用来替换的部分通常是一个字符串。
      #把sub(要替换的串,替换的串,替换后的子串)
      m = re.sub('X','Mr. Smith', 'attn: X\n\nDear X,\n')
      print(m)
      # attn: Mr. Smith
      #
      # Dear Mr. Smith,
      #把sub(要替换的串,替换的串,替换后的子串)返回替换的总数
      m = re.subn("X",'Mr.Smith','attn: X\n\nDear X,\n')#('attn: Mr.Smith\n\nDear Mr.Smith,\n', 2)
      print(m)
      m = re.sub('[ae]', 'X', 'abcdef')#XbcdXf
      print(m)
      
    19. 在限定模式上使用split()分隔字符串
    20. #在限定模式上使用split()分割字符串
      m = re.split(":", 'sta1:sta2:sta3')
      print(m)
      DATA = {'SHNAG HAI,144','GUANGZHOU,522','LINGXIA,455'
      }
      for lam in DATA:print(re.split(",",lam))
      # ['LINGXIA', '455']
      # ['GUANGZHOU', '522']
      # ['SHNAG HAI', '144']
    21. 扩展符号

    22. #扩展符号:
      #(?i)忽略大小写匹配
      m = re.findall(r'(?i)yes','yes? Yes. YES!!')#['yes', 'Yes', 'YES']
      print(m)
      m = re.findall(r'(?i)th\w+','The quickest way is throgh this tunnel.')#['The', 'throgh', 'this']
      print(m)m = re.findall(r'(?im)(^th[\w]+)', """This line is the fie ,another line,that line ,it's basd th""")
      print(m)
    23. 一些正则表达式的实例:

    24. 在Linux下输入who获取当前系统的用户信息:解析获取到的信息,

    25. import os
      import re
      # 将系统指令的执行信息写入f
      f = os.popen('who','r')
      for each in f:
      # split方法用于指定分隔符分割,each,retrip用于去除空格。\s表示空格\t表示制表符print re.split(r'\s\s+|\t', each.rstrip())
      f.close()[root@localhost pythonDemo.py]# python rewho.py
      ['root', 'tty1', '2019-07-29 10:52']
      ['root', 'pts/0', '2019-08-30 08:53 (192.168.36.1)']
      ['root', 'pts/1', '2019-08-30 10:17 (192.168.36.1)']
      ['root', 'pts/2', '2019-08-30 10:55 (192.168.36.1)']
      
    26. 用正则表达式练习的数据生成器(gendata.py)

    27. from random import randrange, choice
      # ascii_lowercase表示一个拥有26个小写字母的序列集合。
      from string import ascii_lowercase as lc
      from sys import maxint
      from time import ctime
      #定义一个元组
      tlds = ('com', 'edu', 'net', 'org', 'gov')
      #生成第5行和第10之间的输出,随机整数使用xrange(randrange(i,j))
      for i in xrange(randrange(5,11 )):# 获取的随机整数范围为2的32次方。dtint = randrange(2**32)# 由获取的随进整数的得到一个日期。dtstr = ctime(dtint)# 获取伪造邮件地址的登录名为4到7个字符llen = randrange(4, 8)# 随机选择4到7个小写字母,将所有的字符连接成一个字符串。choice()函数的功能就是接受一个序列。# 然后返回该序列的随机元素。生成用户名 login = ''.join(choice(lc) for j in range(llen))# 邮件地址的主域名不超过12个字符。但至少要比登录名一样长。dlen = randrange(llen, 13)# 生成邮件地址主域名。dom = ''.join(choice(lc) for j in xrange(dlen))# 指定格式把信息输出,print '%s::%s@%s.%s::%d-%d-%d' % (dtstr, login, dom, choice(tlds), dtint, llen, dlen)[root@localhost pythonDemo.py]# python genddata.py
      Tue Mar 19 22:30:43 1985::fohr@keboh.net::480090643-4-5
      Thu Jul 20 09:54:33 2084::gkhibt@vzedlfrjkrv.org::3614896473-6-11
      Thu Jul  3 23:42:06 2059::codci@smhsq.org::2824472526-5-5
      Thu Dec  6 05:55:47 2096::fzcew@wizktq.net::4005582947-5-6
      Fri Mar 16 20:54:13 2001::hmsygud@mogiwegq.com::984747253-7-8
      Fri Apr  2 23:51:47 1971::dmoq@pxfl.com::39455507-4-4
      Sun Jan 30 07:12:35 2056::yguy@itfyxk.com::2716413155-4-6
      Wed Jun 24 07:13:10 2026::lbtaety@nmazeenzhq.com::1782256390-7-10
      Wed Jun  5 02:51:10 1974::apwpc@vkdydrwm.net::139603870-5-8
    28. 匹配字符串:

    29. import re
      data = 'Thu Dec  6 05:55:47 2096::fzcew@wizktq.net::4005582947-5-6'
      patt = '^(\w{3})'
      m = re.match(patt, data)if m is not None:print(m.group())
    1. 网路编程:

    2. 在服务器响应客户端请求之前,必须执行一些初步的设置流程来为之后的工作做准备。创建一个通信端点,能够使服务器监听请求。
    3. 套接字:计算机网络的数据结构,任何类型的通行在开始之前,网络应用程序必须创建套接字,可以将他们比电话擦孔,有两种类型的套接字,基于文件(AF_UNIX)的和面向网络(AF_INEF)的。

    4. 总的来说Python只支持AF_UNIX,AF_NETLINK,AF_TICP和AF_INET家族,在所有的家族中AF_INET使用最广泛。

    5. 套接字地址:主机-端口对,一个网络地址由主机号和端口号组成。

    6. 面向连接的套接字和面向无连接的套接字,

    7. 面向连接的套接字:提供可靠的不重复的序列化的数据交付,没有记录边界,意外着每条消息可以拆分为多个片段,且每天消息保证都可要到达目的地。即传输控制协议,创建TCP套接字,必须使用SOCK_STREAM 作为套接字类型,TCP套接字的名字是SOCK_STREAM基于流套接字的其中一种表示。

    8. 无连接套接字:在传输的过程中不需要建立连接,在数据传输过程中无法保证他的顺序性,可靠性和重复性。数据报保存了记录边界,消息是以整体发送的。主要有用户数据报协议,使用SOCK_DGRAM作为套接字,

  1. Python的网络编程:

    1. socket()模块:这个模块中有一个socket()函数,该函数用于创建套机字对象,套接字也有自己的方法 集,这些方法可以实现基于套接字的网络通行。

    2. socket()模块函数,socket(socket_family(AF_UNIX\AF_INET),socket_type(SOCK_STREAM\SOCK_DGRAM), propocol=0)

    3. 创建tcp服务器:

      #! /usr/bin/env python
      # 创建tcp服务器。
      # ss = socket()创建服务器套接字
      # ss.bind()套接字与服务器绑定
      # ss.listen()监听连接
      # inf_loop: 服务器无限循环
      #     cs = ss.accept()接受客户端连接
      #     comm——loop:通行循环
      #         cs.revc()/cs.send()对话(接受/发送)
      #     cs.close()关闭客户端套接字
      # ss.close()关闭服务器套接字(可选)
      from socket import *
      from time import ctime
      # 对bind()方法的标示,可以使用任何可用的地址,
      HOST = ''
      POST = 4747
      BUFSIZ = 1024
      ADDP = (HOST, POST)
      # 分派了TCP服务器套接字tcpSocket,将套接字绑定到服务器地址已及开启TCP监听器的调用。
      tcpSerSock = socket(AF_INET, SOCK_STREAM)
      # 将地址与监听器绑定。
      tcpSerSock.bind(ADDP)
      # 设置并启动tcp监听器,参数传入连接请求的最大次数。
      tcpSerSock.listen(5)
      # 监听器无限循环
      while True:print( '等待连接!!....')# 被动接受tcp客户端的连接,一直等待,直到连接到达。tcpCliSock, addr = tcpSerSock.accept()print('....连接 来自:', addr)# 通信循环while True:# 接受tcp 的消息data = tcpCliSock.recv(BUFSIZ)if not data:break# 发送tcp消息。tcpCliSock.send('[%s] %s' %( bytes(ctime(),'utf-8'), data.decode('utf-8')))# 关闭客户端套接字tcpCliSock.close()
      # 关闭服务器套件字
      tcpSerSock.close()
      
    4. 创建tcp客户端:

      #! /usr/bin/env python
      # 创建TCP客户端
      # cs = socket()创建客户端套接字
      # cs.connect()尝试连接服务器
      # comm_loop: 循环通信
      #     cs.send()/cs.recv()对话(发送/接收)
      # cs.close()关闭客户端套接字from socket import *HOST = '127.0.0.1' # 本地回环地址
      POST = 4747
      BUFSIZ = 1024
      ADDR = (HOST, POST)
      # 建立tcp套接字
      tcpCliSock = socket(AF_INET, SOCK_STREAM)
      # 主动发起tcp服务器连接。
      tcpCliSock.connect(ADDR)while True:# 输入数据data = input('>')if not data:break# 发送tcp消息tcpCliSock.send(data.encode('utf-8'))#  接收tcp消息data = tcpCliSock.recv(BUFSIZ)if not data:print(data.decode('utf-8'))
      # 关闭tcp连接
      tcpCliSock.close()
    5. 执行tcp服务器可客户端:

      等待连接!!....
      ....连接 来自: ('127.0.0.1', 51365)
      等待连接!!....
    6. 创建udp服务器:

      #UDP服务器
      # ss = socket() 创建服务器套接字
      # ss.bind() 绑定服务器套接字
      # int_loop:服务器无限循环
      #     cs = ss.recvfrom()\ss.sendto() 接受发送UDP消息
      # ss.colse() 关闭套接字from socket import *
      from time import ctimeHOST = ''
      POST = 1111
      BUFSIZ = 1024
      ADDR = (HOST, POST)udpSerSock = socket(AF_INET, SOCK_DGRAM)
      udpSerSock.bind(ADDR)while True:print('等待连接')# 接受UDP消息data, addr = udpSerSock.recvfrom(BUFSIZ)# 发送UDP消息udpSerSock.sendto('[%s] %s' % (ctime(), data), addr)print('received from and returned to:',addr)
      udpSerSock.close()
    7. 创建udp客户端:

      #!创建UDP客户端,
      # cs = socket()创建客户端套接字
      # comm_loop: 通行循环
      #   cs.sendto()\cs.recvfrom() #对话
      # cs.close() 关闭客户端套接字。from  socket import  *
      from time import ctimeHOST = 'localhost'
      POST = 1111
      BUFSIZ = 1024
      ADDR = (HOST, POST)udpSerSock = socket(AF_INET, SOCK_DGRAM)while True:data = input('>')if not data:break# 发送UDP消息udpSerSock.sendto(data.encode(), ADDR)#  接受UDP消息data, ADDR = udpSerSock.recvfrom(BUFSIZ)if not data:breakprint(data)
      udpSerSock.close()
    8. 执行udp服务器和客户端:

        嗯,感觉基础的那些没学好,直接看这本书有些吃力,而且Demo大都不能实现,Linux也用的不好,等吧基础在学学,把linux学好了之后在回来学这个吧,感觉就不应该看,浪费了一些时间.还不如看些别的.嗯,生活加油  ^_^.   2019.9.7

《Python核心编程》第三版 读书笔记相关推荐

  1. Linux命令行与shell脚本编程大全第三版 学习笔记

    Linux自己的文件资料: /usr/share/doc (在你的Linux系统中) https://www.osyunwei.com/archives/290.html 0. 注意Linux中一切皆 ...

  2. 【Linux】《Linux命令行与shell脚本编程大全 (第4版) 》笔记-汇总 ( Chapter17-ChapterB )

    十七.创建函数 bash shell 提供了用户自定义函数功能,可以将 shell 脚本代码放入函数中封装起来. 函数是一个脚本代码块,你可以为其命名并在脚本中的任何位置重用它.每当需要在脚本中使用该 ...

  3. 【Linux】《Linux命令行与shell脚本编程大全 (第4版) 》笔记-Chapter16-脚本控制

    十六.脚本控制 Linux 利用信号与系统中的进程进行通信. 重温 Linux 信号 Linux 系统和应用程序可以产生超过 30 个信号.在 shell 脚本编程时会遇到的最常见的 Linux 系统 ...

  4. 【Linux】《Linux命令行与shell脚本编程大全 (第4版) 》笔记-汇总 ( Chapter1-Chapter16 )

    一.初识 Linux shell Linux 系统可划分为以下 4 部分. Linux 内核 GNU 工具 图形化桌面环境 应用软件 内核主要负责以下 4 种功能. 系统内存管理 内核通过硬盘上称为交 ...

  5. 【Linux】《Linux命令行与shell脚本编程大全 (第4版) 》笔记-Chapter6-Linux 环境变量

    六.Linux 环境变量 bash shell 使用环境变量来存储 shell 会话和工作环境的相关信息(这也是被称作环境变量的原因).环境变量允许在内存中存储数据, 以便 shell 中运行的程序或 ...

  6. 【Linux】《Linux命令行与shell脚本编程大全 (第4版) 》笔记-Chapter9-安装软件

    九.安装软件 软件包管理系统使用数据库来记录下列内容: Linux 系统中已安装的软件包. 每个软件包安装了哪些文件. 每个已安装的软件包的版本. 软件包存储在称为仓库(repository)的服务器 ...

  7. Linux命令行与shell脚本编程大全:第2版

    <Linux命令行与shell脚本编程大全:第2版> 基本信息 作者: (美)布卢姆(Blum,R.) 布雷斯纳汉(Bresnahan.C.) [作译者介绍] 译者: 武海峰 丛书名: 图 ...

  8. 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---34

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下: 转载于:https://www.cnbl ...

  9. 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---02

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下: 转载于:https://www.cnbl ...

  10. 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---20

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下: 转载于:https://www.cnbl ...

最新文章

  1. 左神算法:环形单链表的约瑟夫问题(Java版)
  2. 盘点物联网常用的八种通信协议
  3. 洛谷-P3396 哈希冲突 分块
  4. 应物联网要求而生 美国团队研发出零功耗红外探测器
  5. C++获取当前时间及计算当前时间距某个时间点的时间段
  6. 虚拟现实果真来了吗?
  7. python数据结构和算法pdf_用python解决数据结构和算法.pdf
  8. 安卓TextView的常用属性
  9. 计算机屏保的功能,电脑的屏保自动出来格言
  10. epoll的两种触发模式ET和LT
  11. ThinkPad T43续命记
  12. Atomic的介绍和使用(原子变量)
  13. 雷军“小米模式”最精简总结
  14. 关于ele-calendar defaultValue赋值无效
  15. 点击链接自动跳出微信在手机自带的浏览器中下载APK文件
  16. 迷你世界计算机原理,迷你世界先遣服免费账号永久2020
  17. 同事逆袭面进阿里P7 年薪60W+,临别留下一张Android开发重点技术路线图
  18. DOM中的动态NodeList与静态NodeList
  19. ubuntu修改时区,tzselect报错: /usr/share/zoneinfo/iso3166.tab: No such file or directory
  20. 如何选择反垃圾邮件网关

热门文章

  1. 乐华娱乐申请注册王一博战队 “一波王炸”商标 相关域名情况如何
  2. 讲讲微服务应该如何拆分模块
  3. 计算机毕业设计Java医院疫情防控管理系统(系统+源码+mysql数据库+Lw文档)
  4. java双引号嵌套_java和javascript双引号嵌套的问题
  5. JQUERY实时监听INPUT输入值
  6. 试用微软官方 windows Azure云 服务器
  7. 在国内如何提高英语口语
  8. 只要不上网,pc机就不会感染计算机病毒,2010年3月江苏省计算机等级考试全真试题5...
  9. yahoo信箱POP/SMTP设置
  10. 分享Linux常见命令echo命令代码实现