Python字符串初认识

239 阅读5分钟
  • 什么是字符串

字符串是一种最常用的数据类型,定义时使用'或者"将内容括起来。

字符序列,字符集合

Python 3的字符串使用Unicode

  • 转义字符

在字符串中使用\将某些字符进行转义,使其有特殊的功能,常用的有换行符\n、制表符\t、'表示'、"表示" 等等。可以在字符串前面加r不转移字符串中的\。

cartoon = 'Monty Python's Flying Circus'
cartoon = r'Monty Python's Flying Circus'
  • 三引号

定义字符串时,也可以使用三引号包括,它允许一个字符串跨多行书写,并且不使用\换行符。可以实现所见即所得的效果。

html = """
    <html>
        <head>
        </head>
        <body>
            <h1>Hello, Python</h1>
        </body>
    </html>
"""
  • 下标

字符串中每个字符都有它自己的下标,我们可以使用[下标]运算符来获取该下标位置的字符。

words = "abcdefg"
print(words[6])  # 打印g
print(words[-1])  # 打印g
  • 不可变

字符串是不可变数据类型,一旦定义后,里面的内容就不能改变。

  • 切片

字符串可以使用[头下标:尾下标]运算符截取子字符串又叫切片操作。

words = "abcdefg"
print(words[1:])     取出下标1后的字符
print(words[1:5])    取出下标1到下标4的字符
print(words[1:-1])   取出下标1到下标-2的字符
  • in 和not in

    • in 判断某个字符串是另外一个字符串的子字符串
    • not in 判断某个字符串不是是另外一个字符串的子字符串
greeting = "Hello Python"
name = "Python"
if name in greeting:
    print(name, "is a substring of", greeting)
else:
    print(name, "is not a substring of", greeting)
  • for ... in 操作

遍历字符串中的字符操作。

name = "张三"
for i in name:
    print(i)

代码练习1

创建字符串
mystr='hello'

[index] - 通过索引访问字符串中的字符  

字符串中每个字符分配一个其位置有关的整数,左边从0开始,称之为正索引,右边从-1开始,称之为负索引
 h  e  l  l  o
 0  1  2  3  4      从前面索引
-5 -4 -3 -2 -1      从后面索引

print(mystr[0])
print(mystr[-5])
print(mystr[-1])
print(mystr[4])
print(mystr[5])     IndexError - 索引错误
[m:n]               通过索引截取部分字符串,称为切片
print(mystr[0:3])   包含0对应的字符,但不包含3对应的字符
print(mystr[:3])    起始索引默认为0
print(mystr[3:])    从起始索引开始到结束 

\    转义字符
\n   换行
\t   制表符 
\"   双引号

mystr="line1\nline2\nline3"
mystr="w1\tw2\tw3" 
mystr="\"19.8\",\'2.0\'"
print(mystr) 

字符串运算符
+ 字符串连接
* 重复输出字符串
in 成员运算符,如果字符串包含给定的字符返回True
not in 成员运算符,如果字符串不包含给定的字符返回True
% 格式化字符串

mystr="hello" + ","+"123"
mystr="hello"*10
print(mystr) 

mystr="helloabc"
b = "abc" in mystr 
b = "aaa" not in mystr
print(b)  

% 字符串格式化

字符串格式化符号
%f  格式化浮点数字
%d  格式化整数
%s  格式化字符串

name="Zhang"
age=20
pi=3.1415926

print("My name is %s" % name)
print("I am %d" % age) 
print("pi is %.3f" % pi)

新的格式化字符串的语法  Python3.6后新增
name = "zhang"
print(f"hello {name}") 

代码练习2

什么是字符串   字符集合(字符序列)

特殊的字符串   没有字符   ''

创建字符串,使用引号(单引号、双引号、三引号)

mystr = ''    空字符串
mystr = "hello"   
print(mystr)  

字符串中每个字符都分配一个数字,称之为索引,左边从0开始,右边从-1开始
    h   e   l   l   o
    0   1   2   3   4       正索引
   -5  -4  -3  -2  -1       负索引 

使用[]获取字符串中的字符 
单个字符
print(mystr[0])  
print(mystr[-5])  
print(mystr[4])
rint(mystr[-1])   

print(mystr[5])     报错,索引超出范围了   正索引最大取值=字符个数-1

[m:n] 获取起始索引到结束索引中间的多个字符,注意不包含结束索引的字符  - 切片
print(mystr[0:4])   前闭后开 包括起始索引的字符,但不包括结束索引的字符
print(mystr[:4])    如果不写起始索引,默认为0
print(mystr[1:])    如果不写结束索引,取到字符串的最后一个字符
print(mystr[0:5:2])   [起始索引:结束索引:步长]

len() - 获取字符串中字符的个数
print(mystr,"字符个数:",len(mystr))   

字符串创建后不能修改,但是变量可以修改(变量存放的是字符串的地址值)
print(id(mystr))     id()   返回变量在内存中的地址 2631280156976
mystr="python"
print(mystr)   
print(id(mystr))    变量在内存中的地址:2631280124144

\ 转义字符  
\n    - 换行符   算一个字符
mystr = "line1\nline2\nline3"
\t    - 制表符           
mystr = "w1\tw2\tw3"     
\\    -  普通的\
mystr = "a\\b\\c"   
print(len(mystr))      
\'    -  普通的'
\"    -  普通的"        
mystr = "\"我\"的"                   
print(mystr)  

操作字符串的运算符
+  字符串的拼接
mystr = 'hello' + 'python'
print(mystr)  

*  字符串*整数   复制字符串
mystr = "hello"*20
print(mystr) 

in 成员运算符  字符串中如果包含给定的部分字符串,返回True 否则返回False
mystr="hello python"
print("java" in mystr)

not in 成员运算符  字符串中如果不包含给定的部分字符串,返回True 否则返回False
print("java" not in mystr) 

%  格式化

字符串格式化符号
%f  格式化浮点数字
%d  格式化整数
%s  格式化字符串 

name = 'zhang'
age = 20
pi = 3.1415926

print("My name id %s" % name)   
print("I am %d" % age) 
print("pi = %.3f" % pi)

print("%d" % int('123'))