- 字符串

  - 字符串属于不可变序列,一般使用单引号、双引号或三引号进行界定,并且单引号,双引号、三单引号、三双引号还可以相互嵌套,用来表示复杂的字符串。

  - 字符串类型是一类特殊的数据集对象,称为序列。序列类型中的对象按一定顺序排列,即对象序列。

  - 构建字符串:

    - 字符串构造函

      - 使用函数str()

x = str(123)
print(x,type(x))
y = str(u'dd456dd')
print(y,type(y))

#结果
# 123 <class 'str'>
# dd456dd <class 'str'>

    - 使用引号:

      - 单引号:'abc'、'a'、'123'。

      - 双引号:"a"、"123"、"acs"。

        - 单双引号可以交错使用

      - 三单或者三双:"'Python"'、"""Python"""。 

        - 三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符。

      - 带 r或者R前缀的Raw字符串:r"abc\n123"。

        - Python不会解析其中的转义字符。典型应用在表示文件路径。

# fl = open('d:\temp\newlist.py', 'r') 
#上面代码会执行错误
fl = open('d:\\temp\\newlist.py', 'r') #使用反斜杠表示转义字符

fl = open(r'd:\\temp\\newlist.py', 'r')  #使用Raw字符串表示文件名字字符串

fl = open('d:/temp/newlist.py', 'r')   # 使用正斜杠表示

      - 带 u或者U前缀的Unicode字符串:u"asdf"、U"asdss"。 以u或U开头的字符串表示unicode字符串

          - Unicode是书写国际文本的标准方法。如果你想要用非英语写文本,那么你需要有一个支持Unicode的编辑器。

          - 类似地,Python允许你处理Unicode文本——你只需要在字符串前加上前缀u或U。

print(u'我')
print(u'458\t\tdd')  #不能忽视转义字符

#结果:
#我
#458		dd

 

  - 转义字符

转义字符

描述

\(在行尾时)

续行符

\\

反斜杠符号

\'

单引号

\"

双引号

\a

响铃

\b

退格(Backspace)

\e

转义

\000

\n

换行

\v

纵向制表符

\t

横向制表符

\r

回车

\f

换页

\oyy

八进制数yy代表的字符,例如:\o12代表换行

\xyy

十进制数yy代表的字符,例如:\x0a代表换行

\other

其它的字符以普通格式输出

 

  - 访问字符串中的值

s = "abc"
#直接访问
print(s)

#注意有反斜杠的字符串,使用Raw字符串
s = "Let's go"
print(s)

s1 = "Let\'s go"
print(s1)

  

  - 字符串运算符

a = '123'
b = 'wwwas'

print(a+b)
print(a*2)
print(b*2)

# 123wwwas
# 123123
# wwwaswwwas

  

  - 字符串比较

    - 两个单字符之间的比较都会转化为对应得ASCII值之间的关系。

      - 使用ord()函数和chr()可以查看相应的ASCII码。

#查看ASCII码
print(ord('a'))
print(chr(97))

#两个字符的比较
print(('a'<'b'))

#结果:
#97
#a
#True

    - 多字符之间:从索引为0的位置开始比较,若相等则索引值加一再比较,等待字符串结束。

v1 = "ab" < "abc"
v2 = "ab" < "ac"
v3 = "ab " < "ab"
print(v1,v2,v3)

#结果:
#True True False

 

-字符串格式化:

- % 格式符方式

  - 格式: %[(name)][flags][width].[precision]typecode 

- (name): 可选,用于选择指定的ke   

    - flags: 可选,可供选择的值有: 

       - +: 指定右对齐输出     右对齐:正数前加正号,负数前加负号

              - -: 指定左对齐输出 左对齐:正数前无符号,负数前加负号;

-  空格 ,       
              - 右对齐;正数前加空格,负数前加负号        
              - 右对齐;正数前无符号,负数前加负号;用0填充空白处
    - width:         可选,占有宽度
    -  . precision:    可选,小数点后保留的位数
    - typecode:      必选
        - s,获取传入对象的__str__方法的返回值,并将其格式化到指定位置,字符串(采用str()显示)
        - r,获取传入对象的__repr__方法的返回值,并将其格式化到指定位置,字符串(采用repr()显示)
        - c,单个字符
            - 整数:将数字转换成其unicode对应的值,10进制范围为 0 <= i <= 1114111(py27则只支持0-255);
            - 字符:将字符添加到指定位置
        - b, 二进制整数
        - o,八进制整数
            - 将整数转换成八进制表示,并将其格式化到指定位置
        - x,十六进制整数
            - 将整数转换成十六进制表示,并将其格式化到指定位置
        - d,十进制整数
            - 将整数、浮点数转换成 十 进制表示,并将其格式化到指定位置
        - e,将整数、浮点数转换成科学计数法,并将其格式化到指定位置(小写e)
        - E,将整数、浮点数转换成科学计数法,并将其格式化到指定位置(大写E)
        - f, 将整数、浮点数转换成浮点数表示,并将其格式化到指定位置(默认保留小数点后6位)
        - F,同上
        - g,自动调整将整数、浮点数转换成 浮点型或科学计数法表示(超过6位数用科学计数法),并将其格式化到指定位置             (如果是科学计数则是e;)
        - G,自动调整将整数、浮点数转换成 浮点型或科学计数法表示(超过6位数用科学计数法),并将其格式化到指定位置             (如果是科学计数则是E;)
        - %,当字符串中存在格式化标志时,需要用 %%表示一个百分号
#字符串格式化
#%d 此处应该放入一个整数      %s 此处应该放入一个字符串
s = "I love %s"
print(s)
print("I love %s" % "china")
print(s%"china")

s = "I am %d years old"
print(s)
print(s%18)

s = "I am %s,I am %d yera old"
print(s)
print(s%("shuai ge",18))         #如果出现多个占位符,则相应的内容需要用括号括起来。有几个占位符就应该用几个实际的内容代替,或者不要

#Let's go
#Let's go
#I love %s
#I love chinaI love china
#I am %d years old
#I am 18 years old
#I am %s,I am %d yera old
#I am shuai ge,I am 18 yera old
- format函数格式化字符串
- 直接用format 函数进行格式化
    - 使用:以大括号{}和冒号:  代替%。    
    - :[[fill]align][sign][#][0][width][,][.precision][type]

  - 匹配操作:
    - 通过位置匹配
#通过索引的方式进行匹配
s = "{0},{1}".format("first","second")
print(s)
s = "{1},{0}".format("first","second")
print(s)

#结果
#first,second
#second,first
- 通过名称匹配
#名称一一对应,也可以使用字典
s = "{0},{name}".format("first",name="jack")
print(s)
#结果
#first,jack
- 通过下标匹配
list1=[1,2,3]
s = "{0[0]},{0[1]}".format(list1)
print(s)
#结果
#1,2
- 其他
age = 18
name = "xiaoming"
s = "{name} {age} years old".format(**locals())
print(s)

#结果
#xiaoming 18 years old

    - 格式规约:使用(:)引入的,其后可以跟随可选的字符对。

/*
        - fill         【可选】空白处填充的字符
        - align        【可选】对齐方式(需配合width使用)
            -  <,内容左对齐
            -  >,内容右对齐(默认)
            -  =,内容右对齐,将符号放置在填充字符的左侧,且只对数字类型有效。 即使:符号+填充物+数字
            -  ^,内容居中
*/
s = "left],{:<15},[right".format(789456)
print(s)
s = "left],{:>15},[right".format(789456)
print(s)
s = "left],{:^15},[right".format(789456)
print(s)
#填充
s = "left],{:.<15},[right".format("789456")
print(s)
s = "left],{:*>15},[right".format("789456")
print(s)
s = "left],{:/^15},[right".format("789456")
print(s)
#是否字符串都能够使用
#结果
#left],789456         ,[right
#left],         789456,[right
#left],    789456     ,[right
#left],789456.........,[right
#left],*********789456,[righ
#left],////789456/////,[right

 

s = "left],{0:0=15},[right".format(789456)
print(s)
s = "left],{:0=15},[right".format(-789456)
print(s)
s = "left],{0:015},[right".format(789456)
print(s)
s = "left],{0:015},[right".format(-789456)
print(s)

#结果
#left],000000000789456,[right
#left],-00000000789456,[right
#left],000000000789456,[right
#left],-00000000789456,[right
/*
        - sign         【可选】有无符号数字
            - +,正号加正,负号加负;
            - -,正号不变,负号加负;
            - 空格 ,正号空格,负号加负
            
        - #            【可选】对于二进制、八进制、十六进制,如果加上#,会显示 0b/0o/0x,否则不显示
        - ,            【可选】为数字添加分隔符,如:1,000,000
        - width       【可选】格式化位所占宽度
        - .precision 【可选】小数位保留精度
        - type         【可选】格式化类型
            - 特例 %,显示百分比(默认显示小数点后6位)     
*/