python入门2——基础语法2——字符串详解

python入门2——基础语法2——字符串详解,第1张

目录

前言

字符串

拼接字符串

字符串索引

字符串切片

 字符串不可变性

 字符串大小转换方法

 字符串分割、组合与移除

 字符串定位与替换方法

总结




前言

字符串是 Python 中最常用的数据类型。我们可以使用引号 ( ' 或 " ) 来创建字符串。

在开始字符串详细介绍前,先介绍python中两个很重的函数,输入函数——input()和输出函数——print(),还有一个比较特殊的函数——eval()

input():是获取用户输入的函数

input()函数使用格式:

<变量> =input(<提示信息字符串>)

用户输入的信息以字符串类型保存在<变量>中

name=input('请输入张三的名字:')

print():是获取用户输出结果的函数(也可以理解成print()函数会将括号里的内容直接输出出来,并打印到屏幕上)

print()函数使用格式:

print(<内容>)

print(635)
# 输出:635
print(1135 - 635)
# 输出:500
print('1135-635')
# 输出:1135-635
#注意1:第三个print()函数,若函数里面的内容是字符串,输出结果不带引号
#注意2:print()函数括号里面内容还可以是其他数据类型,后面章节再进行叙述。

eval():是一种去掉参数最外侧引号并执行余下语句的函数

eval()函数的基本使用格式:

eval(<字符串或字符串变量>)

print(eval("1"))
#输出:1,eval去掉参数里最外层引号后,结果是整数1,print(1)的结果还是1
print(eval("1+2"))
#输出:3,eval去掉参数里最外层引号后,结果是整数表达式1+2,print(1+2)的结果是3
#注意:print函数自带计算器功能
print(eval('"1+2"'))
#输出:1+2,eval去掉参数里最外层引号后,结果是"1+2",print("1+2")的结果还是1+2
print(eval("'1+2'"))
#输出:1+2,eval去掉参数里最外层引号后,结果是'1+2',print('1+2')的结果还是1+2
字符串

怎样打印多行文字

方法1:使用一对三引号(''' 或 """)来包裹多行字符串,我们使用三行字符串来打印一首小诗。

poetry = '''我怎么能够把你来比作夏天?
你不独比它可爱也比它温婉:
狂风把五月宠爱的嫩蕊作践,
夏天出赁的期限又未免太短:'''
print(poetry)
# 输出:
# 我怎么能够把你来比作夏天?
# 你不独比它可爱也比它温婉:
# 狂风把五月宠爱的嫩蕊作践,
# 夏天出赁的期限又未免太短:

方法2:除了使用多行字符串来实现多行文本外,使用 \n 也能达到一样的效果。\n 被称为 换行符,用于文本间的换行。

poetry = '日暮苍山远,天寒白屋贫。\n柴门闻犬吠,风雪夜归人。'
print(poetry)
# 输出:
# 日暮苍山远,天寒白屋贫。
# 柴门闻犬吠,风雪夜归人。

Python 中的字符串是使用一对英文单引号(')或英文双引号(")包裹的任意文本。无论是用单引号还是用双引号,它俩的效果都是一样的,但需要保持前后引号的统一

#下列常见几种错误
# 前后不统一
name1 = '张三"
name2 = "张三'

# 使用了中文引号
name1 = ‘张三’
name2 = “张三”
拼接字符串

通过 + 可以将两个字符串拼接,得到一个新的字符串

str1 = '海草'
str2 = str1 + str1 + str1
print(str2)
# 输出:海草海草海草
字符串索引
str = 'Hello World'
print(str[6])  # 输出:W
print(str[-5])  # 输出:W

 正向索引是从 0 开始计数,而反向索引则是从 -1 开始计数。

一般我们采取“就近原则”来决定使用正向索引还是反向索引——即访问靠前的元素用正向索引,靠后的元素用反向索引。

字符串切片

字符串是有序的序列(关于什么是序列,序列有哪些,后续章节再进行阐述),都可以使用 len() 函数获取元素个数,本节本节的重点——分片。

str = 'Hello World'
# 下面两个效果一样
print(str[6:])  # 输出:World
print(str[-5:])  # 输出:World

 

string = 'Hello World'
# 从索引 0 开始,到索引 3 为止,不包括索引 3
print(string[0:4])  # 输出:Hell
# 如果第一个索引是 0,可以省略
print(string[:4])  # 输出:Hell

print(string[4:11])  # 输出:o World
# 如果分片到末尾,后面也可以省略
print(string[4:])  # 输出:o World

# 如果都省略,则是复制一个一样的字符串
print(string[:])  # 输出:Hello World

 注意事项:

  1. 分片是半闭半开区间,即包含前面索引位置的元素,不包含后面索引位置的元素。比如:string[m:n] 获取的是字符串 string 中索引为 m 到 n-1 之间的元素(包括 m 和 n-1);
  2. 分片中前后索引的值是可以省略的,前索引省略默认为 0,后索引省略默认为序列长度。
#小提示:
string = 'Hello World'
print(string[0:100000])
#结果:Hello World

分片超出范围是不会报错的。你可以把字符串想象成一根绳子,分片就是用刀将绳子切分开来。在字符串长度内分片相当于在绳子上切割,而超出范围相当于一刀砍到了空气,对于绳子来说没有影响。

然而索引超出范围则会报错,如下所示:

string = 'Hello World'
print(string[100000])
#IndexError: string index out of range(索引错误:字符串索引超出范围)的报错。
 字符串不可变性

字符串一旦创建后是不可改变的,这个属性和元组类似,通过索引来改变字符串中元素就会报错:

name = '鹿班七号'
name[0] = '鲁'
print(name)
# 报错:TypeError: 'str' does not support item assignment on line 2

 要修改字符串内容,则进行如下 *** 作:

name = '鹿班七号'
new_name = '鲁' + name[1:]
print(new_name)
# 输出:鲁班七号
 字符串大小转换方法

upper()用于将字符串中的小写字母转为大写字母。

'abcd'.upper()  # 'ABCD'
'aBcD'.upper()  # 'ABCD'

lower()用于将字符串中的大写字母转为小写字母。

'ABCD'.lower()  # 'abcd'
'aBcD'.lower()  # 'abcd'

capitalize()用于将字符串的第一个字母变成大写,其他字母变小写。首字符如果是非字母则不变,其他字母变小写。

'ABCD'.capitalize()  # 'Abcd'
'aBcD'.capitalize()  # 'Abcd'
'1abcd'.capitalize()  # '1abcd'
'1aBcD'.capitalize()  # '1abcd'

title()用于返回“标题化”的字符串——即所有单词的首字母转为大写,其余字母均为小写。

'this is an example string'.title()   # This Is An Example String
'5g is coming'.title()  # 5G Is Coming
#注意:非字母后的第一个字母将转为大写字母。

swapcase()用于对字符串的大小写字母进行互相转换。

'abcd'.swapcase()  # 'ABCD'
'aBcD'.swapcase()  # 'AbCd'
 字符串分割、组合与移除

split() 用于通过指定分隔符对字符串进行分割,最终产生一个列表序列。

split() 方法有两个可选参数,第一个参数为分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。第二个参数为最大分割次数,默认为 -1,即不限次数。

'张 三 李 四'.split()  # ['张', '三', '李', '四']
'张 三 李 四'.split('')  # ['张', '三', '李', '四']
'张 三 李 四'.split(' ')  # ['张', '三', '李', '四']
'张-三-李-四'.split('-')  # ['张', '三', '李', '四']
'张三李四'.split('三李')  # ['张', '四']
'张 三 李 四'.split(' ', 1)  # ['张', '三 李 四']

join()用于将序列中的元素以指定的字符连接生成一个新的字符串。

join() 方法接收一个序列(列表、元组、字符串等)作为参数,. 前面的字符串用于连接符。(关于列表、元组等序列后续章节进行阐述)

# 列表
''.join(['张', '三', '李', '四'])  # 张三李四
'-'.join(['张', '三', '李', '四'])  # 张-三-李-四
# 元组
'-'.join(('张', '三', '李', '四'))  #  张-三-李-四
# 字符串
'-'.join('张三李四')  #  张-三-李-四

strip()用于移除字符串开头和结尾指定的字符(默认为空字符)或字符序列。

当传入一个字符串时,会将传入字符串中每个字符依次移除。

' 张三李四  '.strip()  # '张三李四'
'~~张三李四~~'.strip('~')  # '张三李四'
'~~张三~~李四~~'.strip('~')  # '张三~~李四'
'_~_张三李四_~~'.strip('~_')  # '张三李四'

补充:

 字符串定位与替换方法

count()用于统计字符串中某个字符串出现的次数。

第一个参数为要统计次数的字符串,后两个可选参数为在字符串搜索的开始与结束索引。

'aabbcccd'.count('a')  # 2
'aabbcccd'.count('ab')  # 1
'aabbcccd'.count('e')  # 0
'aabbcccd'.count('a', 2, 6)  # 0
# 等同于 'bbcc'.count('a')
'aabbcccd'.count('c', 2, 6)  # 2
# 等同于 'bbcc'.count('c')

find()用于检测字符串中是否包含子字符串。

如果包含子字符串返回第一次出现的索引值,否则返回 -1。第一个参数为要查找的子字符串,后两个可选参数为在字符串搜索的开始与结束索引。

'abc'.find('b')  # 1
'abcabc'.find('b')  # 1
'abcabc'.find('d')  # -1
'abcbcdabc'.find('bcd')  # 3
'abcabc'.find('b', 1, 2)  # 1
'abcabc'.find('b', 2, 3)  # -1

replace()用于将字符串中的指定字符串替换成别的字符串。

第一个参数为被替换字符串,第二个参数为替换字符串,第三个可选参数为替换的最多次数,默认为无限次。

'abcd'.replace('b', 'e')  # 'aecd'
'abbbcbd'.replace('b', 'e')  # 'aeeeced'
'abbbcbd'.replace('bb', 'e')  # 'aebcbd'
'abbbcbd'.replace('b', 'e', 2)  # 'aeebcbd'

总结

以上就是今天要叙述的内容,本文仅仅简单介绍了一些字符串的基本用法,以及一些常用的用法。

写的不好,多多指教。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/736324.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-28
下一篇 2022-04-28

发表评论

登录后才能评论

评论列表(0条)

保存