[关闭]
@ds17 2017-10-30T08:21:06.000000Z 字数 5132 阅读 1434

Python基础

Data_Science

2017/2/23

1.正则表达式元符

  \d:一个数字;

  \w:一个字母或数字;

  \s:一个空格;

  \S:匹配任意非空字符;

  .:一个任意字符;

  *:任意个任意字符;

  +:一个或以上个任意字符;

  ?:0个或1个任意字符

  \d+?:加个问号→非贪婪匹配;

  {n}:n个字符

  {n,m}:n-m个字符

  []:一个范围。

2.正则表达式分组提取

  在表达式上加(),第一个括号为第一组。

  1. m.group(0) #原始字符串
  2. m.group(1) #第一个字符串
  3. info=re.findall(r'regx',pattern) #返回一个列表
  4. info=re.finditer(r'regx',patterm) #返回一个match对象,只有match对象才具有group属性。
  5. plt=re.findall(r'\"view_price\":\"[\d\.]*\"',html)
  6. #返回匹配到的所有字符串的列表,例如['"view_price":"19.90"']
  7. plt=re.findall(r'\"view_price\":\"([\d\.]*)\"',html)
  8. #返回提取的字符串的列表,例如['19.90','25.20'}

3.正则表达式编译后直接匹配

  1. re_telephone=re.compile(r'^(\d{3})\-(\d{3-8})$')
  2. re_telephone.match(string)

伯乐在线-正则表达式

4.字符串find

 找到字符返回找到位置索引,未找到返回-1。

5.request请求

  1. r.request(url='https://www.baidu.com') #获得一个response对象
  2. r.contend #获得response对象的二进制响应内容。
  3. r.text #获得解码后的内容。
  4. r.encoding #获得response对象解码方式
  5. r.encoding='utf-8' #将response对象解码方式改为:utf-8

6.将内容写入文件

先得打开文件,在写入文件,已‘b’形式打开即以'b'形式写入。

  1. with open(filename,'ab') as ff:
  2. ff.write(bytes)
  3. ff.close()

将request的响应以文件流的形式写入文件

  1. with open(filename, 'ab') as fd: #ab:二进制形式追加写入
  2. for chunk in r.iter_content(chunk_size):
  3. fd.write(chunk)

7.进度条显示库

库名:tqdm

8.术语

9.调用关联App打开文件

  1. import os
  2. os.startfile(filename) #win下类似于双击操作。

2017/2/24

1.HTTP响应代码

200:请求成功

201:请求成功并创建一个了新资源

408:指示客户端没有在服务器准备等待的时间内生成请求

响应状态代码Index

2.Win下杀进程

  1. os.system('taskkill /IM dllhost.exe') #"/IM"前后各有一个空格,加上进程名
  2. os.system('taskkill /F /IM dllhost.exe') #"/F"强制终止进程

进程名:任务管理器 → 应用程序 → 右击 转到进程 

3.解析xml

从xml文件得到dom对象(dom: document object model)

  1. dom1=xml.dom.minidom.parse('xml file path')

从xml字符串的得到DOM对象

  1. dom2=xml.dom.minidom.parseString(xmlString)

xml.dom.minidom教程

4.import非默认路径下的库

  新建环境变量:PYTHONPATH,将值设置为库所在目录

2017/2/26

1.json数据解码

  1. r=requests.get('url') #requests得到json数据
  2. data=r.json() #用json方法解码JSON数据。
  3. #json: javasript object notation 轻量级数据交换格式,一种数据交换语言。

2.pycharm手动安装plugins

下载ZIP文件后可直接安装,下载时需注意对应的pycharm版本。

3.pycharm快捷键

切换标签:ALT+LEFT/RIGHT

pycharm快捷键

4.range函数

  1. x=range(1,4) #只能取得:1,2,3。4是取不到的。

2017/2/28

1.url的编码问题

按标准,URL只允许一部分ASCII字符,其他字符非法。例如汉字就是非法的。


所以在进行HTTP请求时,将“非法字符”进行编码。

  1. #python 3.x
  2. from urllib import parse
  3. parse.quote(str) #除了 -._/09AZaz ,都会进行编码
  4. parse.quote_plus(str) #更激进,也会编码 /

2.进程/线程

一个任务就是一个进程,每个进程可以处理很多种事务,

即多个子任务,子任务成为线程(Tread)。

2017/3/1

1.Git代理设置

公司电脑pycharm通过git连接oschina/github提示端口错误,先修改pycharm的代理为公司默认代理设置,再更改git的代理设置。

  1. git config --global http.proxy http://10.237.130.43:2375
  2. git config --global https.proxy http://0.237.130.43:2375
  3. git config --global http.sslverify false

另外在push到github选项中不勾选:Clone git repositories using

2.pycharm multi commit and push

同时commit and push到oschina/github。


①在oschina/github上跟别建立repository,分别命名为r_name_os/r_name_gh。


②在本地建两个文件夹:osChina/GitHub。


③pycharm→VCS→check out from version control,分别将osChina/GitHub项目check out 到本地。


④分别为两个project。以GitHub为主进行工作commit后将修改的文件copy至osChina目录下,打开r_name_os项目commit and push。

3.日志级别

NOTEST\

默认为:logging.WARNING

2017/3/4

1.导出Cookie

火狐安装Firebug,在面板上直接右键“导出本站点Cookie”,可得到一个txt文件。

截图

2.*.md中小于号

大于号,小于号一般用mark,当表示大于、小于时,需要转义。\<>

2017/3/6

1.工具网站

获取ip地理位置,电话归属地:http://m.ip138.com/

网址缩短:http://suo.im/

2017/3/7

1.python油管安装:pip

  1. pip list --outdated #查看过期库
  2. python -m pip install --upgrade (lib name) #升级过期库
  3. python - m pip install (lib name) #安装库

2.pip安装已编码文件

先安装wheel: pip install wheel

下载已编码的*.whl文件

安装: jieba/wordcloud/scrapy ← twisted ← biopython

3.matplotlib中文乱码

解决方案

2017/3/10

1.打开文件时指定newline参数

  1. file=open(file_path,'r',newline='')

newline是用来控制文本模式之下,一行的结束字符。可以是None,’’,\n,\r,\r\n。

当在读取模式下,如果新行符为None,那么就作为通用换行符模式工作,意思就是说当遇到\n,\r或\r\n都可以作为换行标识,

并且统一转换为\n作为文本输入的换行符。当设置为空’’时,也是通用换行符模式工作,但不作转换为\n,输入什么样的,就保持原样全输入。

当设置为其它相应字符时,就会判断到相应的字符作为换行符,并保持原样输入到文本。



当在输出模式时,如果新行符为None,那么所有输出文本都是采用\n作为换行符。

如果设置为’’或者\n时,不作任何的替换动作。如果是其它字符,会在字符后面添加\n作为换行符。

2.CSV文件读写

  1. import csv
  2. file_path='file path'
  3. file=open(file_path,'r+',newline='')
  4. reader=csv.reader(file)
  5. writer=csv.writer(file)
  6. for line in reader():
  7. print(line) #CSV文件每一行内容被转化为一个有序列表
  8. writer.writerow(['1','2','3']) #在原文件末尾添加一行
  9. file.close() #最后记得关闭文件

3.python模块搜索路径

默认搜索路径获得:

  1. import sys
  2. print(sys.path) #已包含的搜索路径
  3. sys.path.append('/Users/michael/my_py_scripts') #暂时性添加模块搜索路径

永久性修改:环境变量 PYTHONPATH

2017/3/11

1.自定义类时定义私有变量

在变量名前加双下划线:'__';用单下滑线‘_’时仍然可以访问并修改。

  1. class Student(object):
  2. def __init__(self,name,age):
  3. self.__name=name
  4. self.__age=age
  5. ·
  6. bob=Student('bab kaka',36)
  7. bob._Student__name='richard jin'
  8. bob.__name='new name' #运行后不会报错,因为解释器创建了一个新变量:bob.__name

双下划线:Python解释器对外把__name变量改成了_Student__name。可通过_Student__name访问。

2017/3/16

1.python实现任意键退出/继续

利用msvcrt模块

  1. import msvcrt
  2. print(ord(msvcrt.getch())) #getch获得一个键盘输入,ord将其转换为ASCII值,通过判定特定的ASCII值或Enter来决定是实现按下特定按键后的操作。

2017/3/21

1.去除字符串中英文双引号

  1. print(eval('"书""包"'))
  2. #书包

2017/4/9

1.scrapy pywin32模块报错

报错内容:import win32api ImportError DLL load failed

①需手动安装pywin32模块;

将\Lib\site-packages\pywin32_system32下所有文件复制到C:\Windows\System32

2017/4/10

1.安装第三方库编译错误

缺少c++ compiler 可去whl下载页面下载编译器

2.CMD 切换工作路径后pip 失效

直接:pip install D:/python/ananconda3/wordcloud-1.3.1-cp36-cp36m-win_amd64.whl

2017/4/20

1.numpy写入csv文件

只能写一维或二维的数据。

2017/5/4

1.文件类型匹配

内建标准库:fnmatch

2017/5/21

1.conda新环境

  1. conda create --name tensorflow python=3.5 #创建新环境,指定python版本
  2. activate tensorflow
  3. pip install numpy
  4. pip install tensorflow
  5. conda info --envs #确认当前环境
  6. conda remove -n en_name --all #删除环境
  7. #返回默认环境
  8. deactivate
  9. activate root

2017/5/27

1.手动安装第三方库

  1. activate tensorflow
  2. python setup.py install

2.pyinstaller

通过pypi安装的pyinstaller不支持python3.5+,需下载(GitHub)最新版手动安装。

  1. pyinstaller -F -w gbk.py
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注