2016/1/28学习内容

第四章 Python字符串与正则表达式之字符串

编码规则

UTF-8

以1个字节表示英语字符(兼容ASCII),以3个字节表示中文及其他语言,UTF-8对全世界所有国家需要用到的字符进行了编码

GB2312->GBK->CP936

用2个字节表示中文

Unicode

常用指定方法

#coding=utf-8
#coding:GBK
#-*-coding:utf-8-*-

2.x与3.x区别

2.x没有很好的支持,len(中文)=2或3

3.x很好的支持了,len(中文)=1

字符串

是不可变序列,修改生成的字符串

字符串格式化

  • 最基本的

    a1=1
    a2=1
    a3=1
    "%d%d%d"%(a1,a2,a3)
  • 更推荐的.format()方法

    print("The number {0:,} in hex is : {0:#10.4f},the number {1} is oct is {1:#o}".format(5555,55))
    #The number 5,555 in hex is : 5555.0000,the number 55 is oct is 0o67
    print("The nuber {1:,} in hex is : {1:#x}, the nuber {0} in oct is {0:#o}".format(55,5555)) #与位置无关
    #The nuber 5,555 in hex is : 0x15b3, the nuber 55 in oct is 0o67
    print("my name is {name},my age is {age},and my QQ is {qq}".format(name="zhou",qq="111",age=18)) #还能利用变量
    #my name is zhou,my age is 18,and my QQ is 111
    position=(5,8,13)
    print("X:{0[0]} Y:{0[1]} Z:{0[2]}".format(position)) #能利用列表
    #X:5 Y:8 Z:13 #更厉害的是 能把format参数留空,当做一个函数用
    weather=[("Monday","rain")]
    formatter="Weather of '{0[0]}',is '{0[1]}' ".format
    print(formatter(weather[0]))
    #Weather of 'Monday',is 'rain'

字符串常用方法

查找统计类 find(),rfind(),index(),rindex(),count()

  • find(string[,start[,end]])

    从开始到结尾查找string第一次出现的位置 没找到输出-1

end的位置实际是闭区间,实际查找为end-1

  • rfind(string[,start[,end]])

    从结尾到开始查找string第一次出现的位置 没找到输出-1

end的位置实际是闭区间,实际查找为end-1

  • index和rindex

同上,但是如果没有找到,抛出异常

  • count(substr)

统计子字符串出现的次数

切割类 split(),rsplit(),partition(),rpartion()

  • split([分隔符[,最大分隔次数]])

    依照分隔符从左端开始分隔多个字符串,返回一个列表

    如果为参数为空的话,分隔符就是所有的空白符号(包括空格,换行,制表符等)

  • rsplit

  • partition(分割符)

    分隔三个部分,依次为 分隔符前的字符串 分隔符,分隔符后的字符串

  • rpartition

  • qustion?怎么指定多个分隔符

    网上说 用别的模块的split即可

合并类 join()

  • join(list)

将一组列表合并成一个字符串,并在其中插入指定字符,即调用这个方法的字符

转换大小写类 lower() upper() capitalize() title() swapcase()

-lower()

全部转小写

-upper()

全部转大写

-capitalize()

首字母大写,其余全部小写

-title()

其余字符以后的第一个字母大写

-swapcase()

大小写互换

替换类 replace()

-replace(指定串,替换串)

把所有字符串中的指定串替换成替换串

映射类 maketrans() translate()

删除类 strip(),rstrip(),lstrip()

删除两端,右端或左端的空白字符,或连续指定字符

s="aaassssfffff"
print(s.strip("af"))
#ssss

eval()

内置函数eval()尝试把任意字符串转换为Python表达式并执行并返回值

黑客可以利用这一个代码进行入侵

很重要很强大的功能

关键词 in , not in

判断一个字符串是否出现在另一个字符串中,返回True 或 False。

开头结尾检验 startswith() endswith()

能接受一个tuple来批量检验多个参数

能接受一个开头 结尾 指定范围

常见例子 :检验文件后缀名.

import os
[filename for filename in os.listdir(r'D:\\') if filename.endswith(('.bmp'),('.jpg'),('.gif'))]

判断字符的类型 isalnum(),isalpha(),isdigit,isspace(),isupper(),islower()

字符串对齐 center(),ljust,rjust

返回指定宽度的新字符串,原字符串居中,左对齐,右对齐出现在新字符串中,如果宽度大于字符串长度,则使用指定的字符(默认为空格)进行填充

字符串常量

在string模块中定义了多个字符串常量,包括数字字符,标点字符,英文字母,大写字母,小写字母

用户可以直接使用这些常量

import string
print(string.digits)
#0123456789
print(string.punctuation)
#!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
print(string.ascii_letters)
#abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
print(string.printable)
#0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

可变字符串

在Python中,字符串属于不可变对象,不支持原地修改,如果需要修改其中的值,只能重新创建一个新的字符串对象,然而,如果确实需要一个支持原地修改的unicode数据对象,可以使用io.StringIO对象或array模块

import io
s="Hello,world"
sio=io.StringIO(s)
print(sio.getvalue())
#Hello, world
print(id(sio))
#36748456
sio.seek(6)
sio.write("there!")
print(sio.getvalue())
#Hello,there!
print(id(sio))
#36748456

array

s="Hello,world"
import array
a=array.array('u',s)
print(a)
a[0]='y'
print(a) print(a.tounicode()) #array('u', 'Hello,world')
#array('u', 'yello,world')
#yello,world

[Python学习笔记][第四章Python字符串]的更多相关文章

  1. [Python学习笔记][第五章Python函数设计与使用]

    2016/1/29学习内容 第四章 Python函数设计与使用 之前的几页忘记保存了 很伤心 变量作用域 -一个变量已在函数外定义,如果在函数内需要修改这个变量的值,并将这个赋值结果反映到函数之外,可 ...

  2. [Python学习笔记][第七章Python文件操作]

    2016/1/30学习内容 第七章 Python文件操作 文本文件 文本文件存储的是常规字符串,通常每行以换行符'\n'结尾. 二进制文件 二进制文件把对象内容以字节串(bytes)进行存储,无法用笔 ...

  3. Python学习笔记(四)Python程序的控制结构

    在学习了 Python 的基本数据类型后,我们就要开始接触Python程序的控制结构,了解 Python 是如何使用控制结构来更改程序的执行顺序以满足多样的功能需求.如果有的小伙伴在之前学过C语言,j ...

  4. Python学习笔记(四):字符串的学习

    总结的内容: 1.字符串常用的方法 2.Python字符串格式化 3.Python字符串转义字 字符串是 Python 中最常用的数据类型.我们可以使用引号('或")来创建字符串. 创建字符 ...

  5. Python学习笔记 -- 第四章

    高阶函数 变量可以指向函数 f=abs f(-10) 10 变量f指向abs函数,直接调用abs()函数和调用f()完全相同 传入参数 变量可以指向函数,函数的参数可以接收另一个函数的参数,这种函数成 ...

  6. [Python学习笔记][第六章Python面向对象程序设计]

    1月29日学习内容 Python面向对象程序设计 类的定义与使用 类定义语法 使用class关键词 class Car: def infor(self): print("This is ca ...

  7. python学习笔记(四)---python不能输出中文问题

    只需要在所有代码的最前面加上:#coding:utf-8 即可

  8. python学习心得第四章

     python 学习心得第四章 1.lambda表达式 1:什么是lambda表达式 为了简化简单函数的代码,选择使用lambda表达式 上面两个函数的表达式虽然不一样,但是本质是一样的,并且lamb ...

  9. [Python笔记][第四章Python正则表达式]

    2016/1/28学习内容 第四章 Python字符串与正则表达式之正则表达式 正则表达式是字符串处理的有力工具和技术,正则表达式使用预定义的特定模式去匹配一类具有共同特征的字符串,主要用于字符串处理 ...

随机推荐

  1. javascriptt切换组件MyTab.js封装

    之前做的大多数是jquery的插件,就优雅性来说,我觉得还是原生的代码,写起来更舒服一点,虽然麻烦很多. 之前写了一个利用完美运动框架的轮播效果,因为使用的是原生的代码,因为不懂原生对象封装的原因一直 ...

  2. node-sqlite3-API-归纳总结

    SQLITE3-API-LIST:API1. new sqlite3.Database(filename,[mode],[callback]) 返回数据库对象并且自动打开和连接数据库 它没有独立打开数 ...

  3. 使用Flex 和 Red5开发简单视频直播功能

    Flex 是一个高效.免费的开源框架,可用于构建具有表现力的 Web应用程序,这些应用程序利用Adobe Flash Player和Adobe AIR, 可以实现跨浏览器.桌面和操作系统.虽然只能使用 ...

  4. GetClientRect()和GetWindowRect()

    GetClientRect()   是得到客户区坐标系下客户区的RECT GetWindowRect()是得到屏幕坐标系下整个窗口的RECT GetSystemMetrics()是获得屏幕分辨率大小 ...

  5. IntelliJ IDEA14如何配置tomcat

    http://doc.okbase.net/frank1234/archive/121479.html

  6. Oracle11g R2学习系列 之二基本概念和环境介绍

    昨天安装好了之后,发现用Chrome打开OEM发现是英文的,搞得我好奇怪:安装时明明自动显示的是中文的,为何会是英文的呢.后来想想会不会是Oracle用的是浏览器的语言呢,果断打开Chrome的设置, ...

  7. 【JAVA编码专题】UNICODE,GBK,UTF-8区别

    简单来说,unicode,gbk和大五码就是编码的值,而utf-8,uft-16之类就是这个值的表现形式.而前面那三种编码是一兼容的,同一个汉字,那三个码值是完全不一样的.如"汉"的uncode值与g ...

  8. 【干货】.NET开发通用组件发布(一) 介绍

    组件介绍 集合个人和团都开发中遇到的一些通用组件,邮件发送组件.内容采集.CSV数据文件导入工具.日志记录组件.MVC验证登陆组件.MVC分页组件.短信发送组件和强大的Repeate和Repeater ...

  9. Hdu1108(最小公倍数)

    #include <stdio.h> int main() { int Num1,Num2; while(scanf("%d %d",&Num1,&Nu ...

  10. Scala学习笔记--上界(<:)、视图界定(<%)、上下文界定(T:M)

    上界 下界 视界 object Test{ def main(args:Array[String]):Unit={ def mulBy(factor:Double)=(x:Double)=>fa ...