【原创】Python第二章——字符串

字符串是一个字符序列,(提醒:序列是Python的一个重要的关键词),其中存放UNICODE字符。Python中的字符串是不可变的(immutable),即对字符串执行操作时,总是产生一个新的字符串而不是修改现有的字符串。

字符串常量的表示

1. 3种表示

1 #单引号
2 A = ‘Python‘
3 #引号
4 B = "Python"
5 #三引号
6 C = """Python""" 

2. 为什么要这么麻烦?

(1)当字符串中包含了某种引号字符,那么使用与该引号字符不同的引号包含字符串时,可以直接使用该引号,而不用使用转义字符

1 #单引号不用转义
2 A = "I‘m a Python newcomer"
3 #引号不用转义
4 B = ‘I have learnt "C" language‘

(2)三引号可以让输出的字符串直接跨行

当没有三引号时,不得不这样做:

A = "I‘m \na newcomer"

如果使用三引号,可以不用使用\n\

B = """I‘m a
newcomer"""

3. 过长字符串的跨行表示

建议使用圆括号将多行字符串包括在一起,而不是用转义符。

1 #建议
2 A = ("I‘m "
3     "a newcomer")
4 #不建议
5 B = "I‘m " + 6     "a newcomer"
7 C = "I‘m 8      a newcomer"

4. 转义序列

转义字符 含义
\newline 忽略换行
\\ \
\‘
\" "
\a ASCII蜂鸣
\b ASCII退格
\f ASCII走纸
\r 回车CR
\n 换行LF
\t ASCII制表符
\v ASCII垂直指标
\ooo 给定八进制字符
\xhh 给定8位十六进制字符
\uhhhhh 给定16位十六进制字符
\Uhhhh hhhh 给定32位十六进制字符
\N{name} 给定名称的Unicode字符,name是一个标准Unicode名称

字符串的比较

1. < <= > >= == !=与C语言的库函数相似

2. Unicode字符比较存在的问题

(1)有些Unocde字符可以使用多种字节序列表示,比如某些字符可以使用3中不同的UTF-8编码字节表示。

解决方法:使用unicodedata模块的normalize函数,并将‘NKFD‘作为该函数的第一个实参。

1 import unicodedata
2 title = u"Klüft skräms inför på fédéral électoral große"
3 B = unicodedata.normalize(‘NFKD‘, title).encode(‘ascii‘,‘ignore‘)
4 print(B)

(2)字符排序问题

在一些国家中,字母字符的顺序不同于英美国家,例如在瑞典语中,a排在z之后。对此Python不进行推测,而是使用字符串的内存字节进行比较,此时的排序是基于Unocode字元的,当然我们也可以自定义Python的排序方法。

字符串的提取——分片

这和序列的提取——分片是一样的,这放在下一篇文章讲。

字符串操作符和方法

1. 操作符

(1)比较操作符< <= > >= == !=与C语言的库函数相似

(2)*(复制),*=,+(追加),+=

(3)成员关系测试 in

2. 方法

字符串实现了所以通用序列的方法,也带有自己特别的方法,详见帮助文档,这里不说。

(1)格式化字符串的两种方法

printf风格字符串格式化

%操作符,用于格式化的一个操作符。形式为:

  1. format % values

其中format是一个格式化字符串,%用于将后面的values替换前面的格式字符串,作用和C语言的sprintf一样。

在format字符串中带有一个以%开头的转换标识符。用于指示后面value如何替换前面的format字符串。

1 print(‘number is %d‘%10)
2 将输出number is 10

其中的%d就是一个转换标识符,表示这里是一个整数,%d被替换成真实值10。

转换标识符不仅仅一种,它包含两个或以上的字符,并且顺序化地包含以下内容:(提醒:顺序是固定的,但有的是可选)

1) 必须以%开头

2)Mapping key(可选),由一对括号包含的字符序列

3)转换标志(可选),作用于一些转换类型的结果

4)最小宽度字段(可选),用于使转换标识符最后转换得到的长度达到指定的最小宽度字段

5)精度(可选),含义取决于格式字符

6)长度修饰符(可选),修饰整数

7)转换格式字符(必须)

转换标志有:

Flag Meaning
‘#‘ 转换标志的起始符
‘0‘ 用0在数的字段宽度内进行填充
‘-‘ 左对齐 (如果给出了上面的0转换和左对齐转换,则忽略0转换
‘ ‘ (一个空格)在一个有符号转换中,如果是一个正数,那么在开头加上空格而不是‘+‘
‘+‘ 若数为正数,则在开头添加‘+‘(忽略空格标志).

最小宽度字段:

如果字符的数量小于指定的最小宽度字段,则会在剩余的地方进行填充(默认是空格,可以由转换标志修改填充的字符);如果大于,则原样输出。

精度:含义取决于格式字符

格式字符 含义
dioux 精度表示最少显示数字位数,如果精度过大则以0填充,否则原样输出
ef 精度表示小数点后的数字位数
g 精度表示最大有效位
s 精度表示最大的字符数
   

长度修饰符:

h,l,L

h:说明整数是short型

l:说明整数是long型

L:当和efg使用时,L说明是long double型

The conversion types are:

Conversion Meaning Notes
‘d‘ Signed integer decimal.  
‘i‘ Signed integer decimal.  
‘o‘ Signed octal value. (1)
‘u‘ 已废弃,等同于d (7)
‘x‘ Signed hexadecimal (lowercase). (2)
‘X‘ Signed hexadecimal (uppercase). (2)
‘e‘ Floating point exponential format (lowercase). (3)
‘E‘ Floating point exponential format (uppercase). (3)
‘f‘ Floating point decimal format. (3)
‘F‘ Floating point decimal format. (3)
‘g‘ Floating point format. Uses lowercase exponential format if exponent is less than -4 or not less than precision, decimal format otherwise. (4)
‘G‘ Floating point format. Uses uppercase exponential format if exponent is less than -4 or not less than precision, decimal format otherwise. (4)
‘c‘ Single character (accepts integer or single character string).  
‘r‘ String (converts any Python object using repr()). (5)
‘s‘ String (converts any Python object using str()). (5)
‘a‘ String (converts any Python object using ascii()). (5)
‘%‘ 输出%  

Notes:

  1. The alternate form causes a leading zero (‘0‘) to be inserted between left-hand padding and the formatting of the number if the leading character of the result is not already a zero.当使用了转换标志0,那么填充0的时候,填充的位置将是0o和数字之间,比如%#08o‘ % 34的结果是0o000042
  2. The alternate form causes a leading ‘0x‘ or ‘0X‘ (depending on whether the ‘x‘ or ‘X‘ format was used) to be inserted between left-hand padding and the formatting of the number if the leading character of the result is not already a zero.当使用了转换标志0,那么填充0的时候,填充的位置将是0x和数字之间,比如%#08x‘ % 34的结果是0x000022。
  3. The alternate form causes the result to always contain a decimal point, even if no digits follow it.

    The precision determines the number of digits after the decimal point and defaults to 6.精度控制决定了小数点后的位数,默认是6位

  4. The alternate form causes the result to always contain a decimal point, and trailing zeroes are not removed as they would otherwise be.

    The precision determines the number of significant digits before and after the decimal point and defaults to 6.

  5. If precision is N, the output is truncated to N characters.如果上面指定的精度是N,那么字符串的最大长度是N
  1. See PEP 237.

Since Python strings have an explicit length, %s conversions do not assume that ‘\0‘ is the end of the string.

因为Python的String有显式的长度,所以%s转换不认为‘\0‘是字符串的结尾

Changed in version 3.1: %f conversions for numbers whose absolute value is over 1e50 are no longer replaced by %g conversions.

本文链接:http://www.cnblogs.com/cposture/p/4722340.html

时间: 2024-10-25 10:31:10

【原创】Python第二章——字符串的相关文章

machine learn in python 第二章2.1.1

1关于 sklearn.datasets from sklearn.datasets import load_iris import numpy as np data = load_iris() data 的属性如下: 数据存储在.data项中 每个观察对象的种类存储在数据集的.target属性中 数据的特征的种类存储在数据集的.feature_names属性中. 2关于遍历问题 a:遍历不取item的序号i for item in sequence: process(item) b: for 

[Head First Python] - 第二章 python of comment

1- 多行注释 ''' ''' 或 """ """ '''this is the standard way to include a multiple-line comment in you code''' """this is the standard way to include a multiple-line comment in you code""" 2- 单行注释 # # t

python 第二章

第二章 while 循环 # while -- 关键字(死循环) # while 条件 冒号 # 缩进 循环体 # 停止while要点击红色停止,不能只关闭窗口 while True: print("痒") print("鸡你太美") print("卡路里") print("好运来") while False: print("痒") print("鸡你太美") print("卡

Python第二章

1. 下划线_代表最后一个表达式的值.注意:只在解释器中有用,既显示上一次的操作结果. 2. Print语句可以用%进行格式控制,与C相似. 如: >>> print “%s is number %d!” % (“python”, 1) Python is number 1! 3. Python 非常灵活,所以即使你将数字传递给 %s,也不会像其他要求严格的语言一样引发严重后果. 4. 符号 >> 用来重定向输出,下面这个例子将输出重定向到标准错误输出: import sys

python 第二章 二进制运算、字符编码、数据类型

>>> len(s.ljust(50,'*'))50>>> 1.二进制转换: bin(342) '0b101010110' 2.ASCII码与二进制: 每一个ASCII码都是用8位表示,ASCII码一共有255个.每一位0或者1所占的空间单位为bit(比特),这是计算机中最小的表示单位,8位表示一个字节. 8bit = 1bytes(字节),最小的存储单位,1bytes缩写为1B 1KB = 1024B 1MB = 1024KB 1GB = 1024MB 1TB = 1

python第二周 字符串

字符串是一个有序的字符的集合,用来存储和表现基于文本的信息,python的内置数据结构之一.字符串是多个字符组成的序列,因此支持序列的相关操作. 支持的操作有: 1. 通过索引来访问 >>> s = 'this is a test string' >>> len(s)  #len()函数可以得到字符串的长度 21 得到字符串的长度以后,就可以根据索引来访问字符串的内容. >>>s[0]   #正向索引 't' >>>s[-1]  #反

Head First Python 第二章 函数模块&amp;第三章 文件与异常&amp;第四章 持久存储&amp;第五章 处理数据

第三章 1.共享模块 模块和发布工具箱全世界共享模块 编写函数,以.py为文件后缀名,第三方库都在PyPI *注释代码:三引号(单双都可以) 发布过程P40 使用发布工具,函数模块变成了一个“发布”,可以使用import导入其他程序 2.如果函数模块功能不满意 添加参数以供api选择比添加函数工作量小! 首先考虑BIF内置函数 ----------------------------------------------------------- 第四章 1.文件 open()语句,readlin

python第二章函数以及常用模块

装饰器: 定义:本质是函数,(装饰其他的函数)就是为其他函数添加附加功能 原则:1.不能修改被装饰的函数的源代码 2.不能修改被装饰的函数的调用方式 实现装饰器的知识储备 1,函数即"变量" 2,高阶函数 a:把一个函数名当做实参传给另一个函数 b:返回值包含函数名 3,嵌套函数 高阶函数+嵌套函数==装饰器 import time def timemer(func): def wrapper(*args,**kwargs): start_time=time.time() func(*

python 第二章 列表,if循环

列表 序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. Python有6个序列的内置类型,但最常见的是列表和元组. 序列都可以进行的操作包括索引,切片,加,乘,检查成员. 此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法. 列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现. 列表的数据项不需要具有相同的类型 创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起