Python学习02——字符串 String


上一节我们学习了注释、变量和基本数据类型中的Bool和Number。今天,让我们继续来认识一个新朋友——字符串。
字符串,虽然说是新朋友,但我们也对它或多或少也有一个懵懵懂懂的认识。还记得我们的第一行代码吗?"Hello world"就是一个字符串。今天,我们将来更加清晰地认识一下这个老朋友。

字符串的形式

字符串有多种形式,可以有以下几种:

  1. 单行字符串
    使用单引号 ' . . . ' 或者 " . . . " 都可以获得一个字符串:
"""
单行字符串
"""

#使用单引号
print('hello world')  #hello world
#使用双引号
print("hello world")  #hello world

当字符串中需要出现引号时,选择不同的引号创建字符串

#字符串中需要出现单引号
print("I'm Feng_Forever") #I'm Feng_Forever

#字符串中需要出现双引号
print('"Yes ," He said.') #"Yes ," He said.
  1. 多行字符串
    字符串可以使用三对引号 """ . . ."""'''. . . '''实现多行字符串的创建:
"""
创建多行字符串
"""

#使用三对双引号
print("""
    *
  *   *
*   *   *
""")
#
#    *
#  *   *
#*   *   *
#


#使用三对单引号
print('''
    A
  BBBBB
CCCCCCCCC
''')
#
#    A
#  BBBBB
#CCCCCCCCC
#

可以看到,字符串中会保留输出文本中的所有回车换行信息,如果不想包含,可以在行尾填加一个\

#去除第一行换行
print("""\
    *
  *   *
*   *   *
""")
#    *
#  *   *
#*   *   *
#


#去除第一第二行和最后一行的换行
print("""\
    *\
  *   *
*   *   *\
""")
#    *  *   *
#*   *   *

字符串操作

字符串连接

字符串可以用 + 连接到一起。

"""
字符串连接操作
"""
#使用加号将字符串连接
message="Hello"
name='Feng Forever '
print(message+", "+name)  #Hello, Feng Forever

相邻的两个或多个字符串字面值 (引号引起来的字符)将会自动连接到一起

"""
字符串连接操作
"""
#使用加号将字符串连接
message="Hello"
name='Feng Forever '
print(message+", "+name)  #Hello, Feng Forever

#相邻的字符串字面值将自动连接
print('hello ''Feng Forever') #hello Feng Forever
#可以用于长字符,方便查看
print(
    "I have to remind myself that some birds aren’t meant to be caged."
    "Their feathers are just too bright."
    " And when they fly away, the part of you that knows it was a sin to lock hem up DOES rejoice."
    " Still, the place you live in is that much more drab and empty that they’re gone. I guess I just miss my friend."
)
#I have to remind myself that some birds aren’t meant to be caged.Their feathers are just too bright. And when they fly away, the part of you that knows it was a sin to lock hem up DOES rejoice. Still, the place you live in is that much more drab and empty that they’re gone. I guess I just miss my friend.

字符串可用 * 进行重复

"""
重复字符串
"""

#使用*重复字符串
message="ha"
print(3*message)  #hahaha

#不要忘了运算符之间的优先级哦
#加个括号是个好习惯
message="Hello"
name='Feng Forever '
print(message+", "+name*3)  #Hello, Feng Forever Feng Forever Feng Forever

print((message+", "+name+'\n')*3)
#Hello, Feng Forever
#Hello, Feng Forever
#Hello, Feng Forever
#

字符串切片

字符串可以被索引,下标0开始代表第一个字符。下标-1开始代表最后一个字符(-0和0是一样的,都代表第一个字符)。
单个字符是一个长度为1的字符串

"""
字符串索引
"""

message="123456789"
print(message[0])  #1
print(message[1])  #2
print(message[-1]) #9
print(message[-2]) #8
print(type(message[1]))  #<class 'str'>

要注意,若索引过大,超过可被索引的范围(索引越界),程序运行时就会报错并停止运行。

"""
索引越界
"""
message="Hello world"

#得到字符串长度
mes_len=len(message)
print(mes_len)    #11

#别忘是索引是从0开始的。
#虽然字符串的长度为mes_len,但可用的索引最大值为 (mes_len-1)
#故mes_len索引越界
print(message[mes_len])

可以看到,程序时报错,提示有一个IndexError异常发生在第代码的13行,所以我们可以根据异常提示对第13行的代码进行修改。
关于异常,我会在后面的异常处理中详细说明,现在你只要有个简单的认识,大概知道哪里发生异常并能根据提示修改就够了。
在这里插入图片描述
索引的获得单个字符,而切片可以获得子字符串:

"""
字符串切片
"""

message="Hello world"

#切片的起点被包含,但不包含终点
print(message[1:4])  #ell

#若设定起点,则默认为0
print(message[:4])   #Hell

#若不设终点,则打印到字符串末尾
print(message[1:])   #ello world

#别忘了终点是不包含的啊~
print(message[1:-1])  #ello worl

字符串修改

字符串不可修改。在7个基本数据类型中(忘记的同学可以去看看上一节),Number、String、Tuple是不可变数据。因此,你对字符串的某个索引位置赋值会产生一个错误。

"""
字符串不可修改
"""

message="Hello world"

#修改字符串中的某个字符将会报错
message[2]='a'

在这里插入图片描述

字符串的常用内置方法

大小写转换

title()返回一个

"""
介绍一些常用的字符串函数
这些字符串函数返回一个被修改后的原字符串拷贝值,并不修改字符串本身
别忘了,字符串不可修改
"""
message="hello world"

#将字符串中的每个单词的首字母大写
print(message.title())   #Hello World
print(message)           #hello world      字符串本身并不会被修改

#将字符串中的每个字母都转换为大写
print(message.upper())   #HELLO WORLD

message2="HELLO WORLD"
#将字符串中的每个字母都转换为小写
print(message2.lower())  #hello world

删除空白

"""
介绍一些常用的字符串函数
这些字符串函数返回一个被修改后的原字符串拷贝值,并不修改字符串本身
别忘了,字符串不可修改
"""
message3="   hello world   "
#"!"用于突出右侧空格变化
print(message3+"!")            #   hello world   !
#删除字符串中的左右侧的空格
print(message.strip()+"!")     #hello world!
#删除字符串中的左空格,"
print(message3.lstrip()+"!")   #hello world   ! 
#删除字符串中的左空格
print(message3.rstrip()+"!")   #   hello world!

具体用法可参见附表

字符串转义符

字符\可以转义很多特殊符号,比如\n表示换行,\t表示制表符(TAB),字符\本身也需要转义,所以\\表示的字符就是\

"""
转义字符
"""

print("Things that make you sad, \none day, you will laugh out and say it.")
#Things that make you sad, 
#one day, you will laugh out and say it.

print('I\'m Feng_Forever')  #I'm Feng_Forever

print("C:\\Program Files\\Intel\\Wifi\\Help")  #C:\Program Files\Intel\Wifi\Help

有时,需要转义的地方过多,这时,则可以考虑在字符串前加r直接输出原文本,避免输入大量的\

print(r"C:\Program Files\Intel\Wifi\Help")  #C:\Program Files\Intel\Wifi\Help

更多常见转义字符,可参见附表

字符串格式化

"""
字符串格式化
"""

message = "{0} Love {1}".format('I', 'Python')  # 位置参数
print(message)  #I Love Python

message = "{a} Love {b}".format(a='I', b='Python')  # 关键字参数
print(message)  # I Love Python

message = "{0} Love {b}".format('I', b='Python')  # 位置参数要在关键字参数之前
print(message)  # I Love Python

message = '{0:.2f}{1}'.format(3.14159, 'GB')  # 保留小数点后两位
print(message)  # 27.66GB

小结

今天我们学习了字符串的形式、字符串的操作、字符串的函数、字符串的转义符以及字符串的格式化。并且也知道了字符串、数字以及元组是是不可变数据。那今天的学习就到此结束啦。
一起学习,一起成长!

附表

常用方法

字符串的方法描述
str.title()返回原字符串的标题版本,其中每个单词第一个字母为大写,其余字母为小写。
str.lower()返回原字符串的副本,其所有区分大小写的字符均转换为小写
str.upper()返回原字符串的副本,其所有区分大小写的字符均转换为小写
str.lstrip([chars])返回原字符串的副本,移除其中的左侧待移除字符char(默认为空格符)
str.rstrip([chars])返回原字符串的副本,移除其中的右侧待移除字符char(默认为空格符)
str.strip([chars])返回原字符串的副本,移除其中的两侧待移除字符char(默认为空格符)

转义字符

转义字符描述
\反斜杠符号
单引号
"双引号
\n换行
\t制表符(TAB)
\r回车

printf 风格的字符串格式化

print('%c' % 97)  # a
print('%c %c %c' % (97, 98, 99))  # a b c
print('%d + %d = %d' % (4, 5, 9))  # 4 + 5 = 9
print("我叫 %s 今年 %d 岁!" % ('小明', 10))  # 我叫 小明 今年 10 岁!
print('%o' % 10)  # 12
print('%x' % 10)  # a
print('%X' % 10)  # A
print('%f' % 27.658)  # 27.658000
print('%e' % 27.658)  # 2.765800e+01
print('%E' % 27.658)  # 2.765800E+01
print('%g' % 27.658)  # 27.658
text = "I am %d years old." % 22
print("I said: %s." % text)  # I said: I am 22 years old..
print("I said: %r." % text)  # I said: 'I am 22 years old.'
转换符含义
‘d’有符号十进制整数
‘i’有符号十进制整数
‘o’有符号八进制数
‘x’有符号十六进制数(小写)
‘X’有符号十六进制数(大写)
‘e’浮点指数格式(小写)
‘E’浮点指数格式(大写)
‘f’浮点十进制格式
‘F’浮点十进制格式
‘g’浮点格式。 如果指数小于 -4 或不小于精度则使用小写指数格式,否则使用十进制格式
‘G’浮点格式。 如果指数小于 -4 或不小于精度则使用大写指数格式,否则使用十进制格式
‘c’单个字符(接受整数或单个字符的字符串)
‘r’字符串(使用 repr() 转换任何 Python 对象)
‘s’字符串(使用 str() 转换任何 Python 对象)
‘a’字符串(使用 ascii() 转换任何 Python 对象)
‘%’不转换参数,在结果中输出一个 ‘%’ 字符
print('%5.1f' % 27.658)  # ' 27.7'
print('%.2e' % 27.658)  # 2.77e+01
print('%10d' % 10)  # '        10'
print('%-10d' % 10)  # '10        '
print('%+d' % 10)  # +10
print('%#o' % 10)  # 0o12
print('%#x' % 108)  # 0x6c
print('%010d' % 5)  # 0000000005
符号功能
m.nm 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)
-用作左对齐
+在正数前面显示加号( + )
#在八进制数前面显示零(‘0’),在十六进制前面显示’0x’或者’0X’(取决于用的是’x’还是’X’)
0显示的数字前面填充’0’而不是默认的空格
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值