python基础2--小结篇

继续python相关基础的梳理:

1、正则表达式

这里放上一张很实用的表格和一个常见的例子:

例子:电子邮箱验证的正则表达式

1 import re
2 re_email=re.compile(r‘^([\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+)$‘)
3 re_email.match(‘[email protected]‘).groups()
4 re_email.match([email protected]‘).groups() 

2、接下来又谈数据

既然python常用于数据处理,对于不同类型的数据的理解就十分重要了(内容还是参考之前的参考资料)

对于字符串:掌握编码与解码  struct的概念(这个和C或者C+有相似之处),可以处理类似图片等   有意思的还有hashlib函数用来MD5算法

提醒:记得import相应模块

3、CSV (逗号分隔值)

其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。

主要是read和write两大功能

这里分享一个例子:

1)创建csv文件  直接将txt的后缀改成csv即可:例如数据如下

 1 "Year", "Country","Sex","Display Value","Numeric"
 2 "1990","Andorra","Both sexes","77","77.00000"
 3 "2000","Andorra","Both sexes","80","80.00000"
 4 "2012","Andorra","Female","28","28.00000"
 5 "2000","Andorra","Both sexes","23","23.00000"
 6 "2012","United Arab Emirates","Female","78","78.00000"
 7 "2000","Antigua and Barbuda","Male","72","72.00000"
 8 "1990","Antigua and Barbuda","Male","17","17.00000"
 9 "2012","Antigua and Barbuda","Both sexes","22","22.00000"
10 "2012","Australia","Male","81","81.00000"

2)按参考资料编程

首先将地址进行修改: D:\\python\\test.csv 注意都是两个斜杠

然后我的代码如下:

1 import csv
2 csvfile=open(‘D:\\python\\test.csv‘,‘rb‘)
3 reader=csv.reader(csvfile)
4 for row in reader:
5     print(row)

然后 报错了,看一下错误:

Traceback (most recent call last):
  File "<pyshell#62>", line 1, in <module>
    for row in reader:
_csv.Error: iterator should return strings, not bytes (did you open the file in text mode?)

百度了一下,发现了原因,将代码修改如下:

1 import csv
2 csvfile=open(‘D:\\python\\test.csv‘,‘r‘)
3 reader=csv.reader(csvfile)
4 for row in reader:
5     print(row)

就是讲‘rb’改成了‘r‘  然后就成功输出:

[‘Year‘, ‘ "Country"‘, ‘Sex‘, ‘Display Value‘, ‘Numeric‘]
[‘1990‘, ‘Andorra‘, ‘Both sexes‘, ‘77‘, ‘77.00000‘]
[‘2000‘, ‘Andorra‘, ‘Both sexes‘, ‘80‘, ‘80.00000‘]
[‘2012‘, ‘Andorra‘, ‘Female‘, ‘28‘, ‘28.00000‘]
[‘2000‘, ‘Andorra‘, ‘Both sexes‘, ‘23‘, ‘23.00000‘]
[‘2012‘, ‘United Arab Emirates‘, ‘Female‘, ‘78‘, ‘78.00000‘]
[‘2000‘, ‘Antigua and Barbuda‘, ‘Male‘, ‘72‘, ‘72.00000‘]
[‘1990‘, ‘Antigua and Barbuda‘, ‘Male‘, ‘17‘, ‘17.00000‘]
[‘2012‘, ‘Antigua and Barbuda‘, ‘Both sexes‘, ‘22‘, ‘22.00000‘]
[‘2012‘, ‘Australia‘, ‘Male‘, ‘81‘, ‘81.00000‘]

解释一下原因,就是在生成csv时 ,我用了notepad++编辑器,所以输出的类型改变,官方解释如下:

Sorry, folks, we‘ve got an understanding problem here. CSV files are
typically NOT created by text editors. They are created e.g. by "save as
csv" from a spreadsheet program, or as an output option by some database
query program. They can have just about any character in a field,
including \r and \n. Fields containing those characters should be quoted
(just like a comma) by the csv file producer. A csv reader should be
capable of reproducing the original field division. Here for example is
a dump of a little file I just created using Excel 2003:
...
This sentence in the documentation is NOT an error: """If csvfile is a
file object, it must be opened with the ‘b’ flag on platforms where that
makes a difference."""

4、xml

接下来又是解决bug的时候。。。

还是按照教程码代码:首先是廖雪峰的parsers.expat  我命名了一个py叫xml.py

然后copy了代码。。最后报错了。。

No module named ‘xml.parsers‘; ‘xml‘ is not a package

 猜测了种种可能,但是xml的三种解析方式都是自带的,不需要另加安装包。。最后Google了一下,终于发现了问题。。

先写做法:将xml.py换个名字,test.py即可

解释一下原因:编译器自动查找了最近的包。。。所以默认为xml.py就是写的package了,找不到相应的方法就报错了

然后尝试了一下另一套教程的上的代码,主要问题出在写的xml代码

最后贴出两种代码(处理方式不同)

1)sax流模式

from xml.parsers.expat import ParserCreate

class DefaultSaxHandler(object):
    def start_element(self, name, attrs):
        print(‘sax:start_element: %s, attrs: %s‘ % (name, str(attrs)))

    def end_element(self, name):
        print(‘sax:end_element: %s‘ % name)

    def char_data(self, text):
        print(‘sax:char_data: %s‘ % text)

xml = r‘‘‘<?xml version="1.0"?>
<ol>
    <li><a href="/python">Python</a></li>
    <li><a href="/ruby">Ruby</a></li>
</ol>
‘‘‘

handler = DefaultSaxHandler()
parser = ParserCreate()
parser.StartElementHandler = handler.start_element
parser.EndElementHandler = handler.end_element
parser.CharacterDataHandler = handler.char_data
parser.Parse(xml)

2)ElementTree

xml代码

 1 <?xml version="1.0"?>
 2 <menu>
 3     <breakfast hours="7-11">
 4         <item price="$6.00">breakfast burritos</item>
 5         <item price="$4.00">pancakes</item>
 6     </breakfast>
 7     <lunch hours="11-3">
 8         <item price="$5.00">hamburger</item>
 9     </lunch>
10     <dinner hours="3-10">
11         <item price="$8.00">spaghetti</item>
12     </dinner>
13
14 </menu>

python处理

1 >>> import xml.etree.ElementTree as et
2 >>> tree=et.ElementTree(file=‘D:\\python\\data.xml‘)
3 >>> root=tree.getroot()
4 >>> root.tag
5 ‘menu‘
6 >>> for child in root:
7 ...     print(‘tag:‘,child.tag,‘attributes:‘,child.attrib)
8 ...     for grandchild in child:
9 ...         print(‘\ttag:‘,grandchild.tag,‘attributes:‘,grandchild.attrib)

结果:

tag: breakfast attributes: {‘hours‘: ‘7-11‘}
    tag: item attributes: {‘price‘: ‘$6.00‘}
    tag: item attributes: {‘price‘: ‘$4.00‘}
tag: lunch attributes: {‘hours‘: ‘11-3‘}
    tag: item attributes: {‘price‘: ‘$5.00‘}
tag: dinner attributes: {‘hours‘: ‘3-10‘}
    tag: item attributes: {‘price‘: ‘$8.00‘}

其实还有DOM 解析方式,由于DOM会把整个XML读入内存,解析为树,因此占用内存大,解析慢,优点是可以任意遍历树的节点。一般不使用

5、JSON

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#Java、JavaScript、PerlPython等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。

理解之后就两条:

json.dumps(menu) 和json.loads(menu_json)

注意不能解析datetime类的数据

常见的就这几类,还有比如excel pdf等的读取 后续再做整理

时间: 2024-10-12 15:37:17

python基础2--小结篇的相关文章

python基础1--小结篇

如果有别的编程语言基础,python属于极好上手的一门语言.应用上,用“自取所需”来描述,最为贴切. 首先,放上一些推荐. 安装上: 1.python3.5.1(推荐官网直接下载,自带IDLE),安装不麻烦,记得增加环境变量即可 2.编辑器:sublime 其实,并没有使用很多,但是推荐的人超多 ,破解版网上很多,按资源下载即可 3.IDE: 强推 pycharm 对JetBrains软件执着的热爱  方便又美观 网上能找到找到注册码,学生用edu邮箱可以免费使用,当然,支持正版! 熟悉上: 语

python基础-第六篇-6.2模块

python之强大,就是因为它其提供的模块全面,模块的知识点不仅多,而且零散---一个字!错综复杂 没办法,二八原则抓重点咯!只要抓住那些以后常用开发的方法就可以了,哪些是常用的?往下看--找答案~ 模块定义 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才能完成 (函数又可以在不同的.py文件中),n个 .py 文件组成的代码集合就称为模块.

Python基础学习 总结篇

Python基础学习总结 先附上所有的章节: Python学习(一)安装.环境配置及IDE推荐 Python学习(二)Python 简介 Python学习(三)流程控制 Python学习(四)数据结构(概要) Python学习(四)数据结构 —— int float Python学习(四)数据结构 —— str Python学习(四)数据结构 —— bool Python学习(四)数据结构 —— list tuple range Python学习(四)数据结构 —— set frozenset

总结(6)--- python基础知识点小结(细全)

=========================================================================================================================================== 基础: 一.列表======================================================================================================

python基础-第十三篇-13.1web框架本质

基础与概念 众所周知,对于所有的web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端 web框架分两类:一类是包括socket和业务逻辑(tornado),另一类就是只负责业务逻辑 对于第二类,没有socket就要使用其他的服务器程序,比如wsgi,它负责封装客户的请求信息,我们只要按它提供的方法获取数据 首先我们明白了其本质就是socket,如果从socket开始开发应用程序那么效率就太低了,正确的做法是底层的socket处理代码由专门的服务器软件实现,

python基础-第七篇-7.4异常处理

异常基础: 异常处理首先要捕获异常,不让程序中断,也不让错误信息直接呈现出来,然后就是你该怎么处理异常,以什么方式显示 try: pass except Exception,ex: pass 在需要用户输入数字的时候 while True: try: num1 = int(input('请输入第一个数字:')) num2 = int(input('请输入第二个数字:')) result = num1 + num2 print(result) except Exception as e: prin

python基础-第七篇-7.2面向对象(进阶篇)

进入到今天的探索前,我先对上节内容进行一下回顾: 面向对象是一种编程方式,此编程方式的实现是基于对类和对象的使用 类是一个模板,模板中包装了多个函数可供使用 对象是基于类创建的,实例用于调用被包装在类中的函数 对于c#和java--只能用面向对象编程,而对于ruby和python则可以用函数编程和面向对象编程 面向对象不是所有的情况都适用,当两个东西不存在公共的部分,最好用函数编程 对象编程里的self是形式参数,是python内部把对象当参数传递进去的 __init__  构造方法--当实例化

Python基础第三篇

一.collections系列 Counter是对字典类型的补充,用于追踪值的出现次数,具备字典的所有功能 + 自己的功能 1.计数器Counter import collections a='abababsbsbhh' c=collections.Counter(a) #直接列出每个元素出现了几次,传入列表和元组也一样 print(c) #输出:Counter({'b': 5, 'a': 3, 'h': 2, 's': 2}) #most_common 列出Counter内的前几个 print

python基础-第五篇-5.4正则表达式

正则基础知识 正则表达式是通过调用re模块实现的 在python里,正则表达式处理对象为字符串,所以正则里方法和字符串的方法有很多相似的地方:re.findall和find,re.split和split,re.sub和replace 普通字符和元字符 普通字符 大多数的字符和字母都为普通字符 元字符 在正则里,有其特殊的功能的字符称为元字符,如:. ^ $ * + ? {} | () \ .    除了换行符任意一个字符进行匹配 import re strs = 'ji154\n651jia*-

Python 基础【第一篇】环境部署

一.Windows基础环境配置部署 1.1.下载python安装程序 下载地址:https://www.python.org/ftp/python/3.4.1/python-3.4.1.msi 1.2.运行 python-3.4.1.msi 1.3.这里可以选择安装路径(默认即可) 1.4.一路默认下一步 直到安装完毕 1.5.设置环境变量 1.5.1.我的电脑---->右键“属性”---->高级系统设置 1.5.2.环境变量 1.5.3找到系统变量中的“Path” 值 如果没有就添加,名称为