Python基础之字符串

初识字符串

字符串的认识

首先,我们先认识下什么是字符串:

# 定义字符串
t_str1 = "Hello World"
t_str2 = "asdfghh"

print(t_str1)  # Hello World
print(t_str2)  # asdfghh

字符串的介绍

  • 字符串就是一串字符,是编程语言汇总表示文本的数据类型;
  • 在Python中可以使用一对双引号或者一对单引号定义一个字符串;
  • 字符串内部如果需要使用”,可以使用’定义字符串;同理,单引号也是;除此之外,也可以用\转译单引号双引号;
  • 字符串的索引从0开始,可以用索引获取一个字符串的指定位置的字符;
  • 还可以用for遍历字符串中的每一个字符。

字符串的定义语法

变量名 = "一串字符"
eg:
t_str1 = "Hello World"
t_str2 = "asdfgh"
t_str3 = '他说:"你好呀!"'

字符串的操作函数

查看字符串操作函数

在ipython交互式下,先定义一个空字符串,然后输入 空字符. 按下tab键,即可查看;

In [1]: t_str = ""    

In [2]: t_str.
t_str.capitalize    t_str.isidentifier  t_str.rindex
t_str.casefold      t_str.islower       t_str.rjust
t_str.center        t_str.isnumeric     t_str.rpartition
t_str.count         t_str.isprintable   t_str.rsplit
t_str.encode        t_str.isspace       t_str.rstrip
t_str.endswith      t_str.istitle       t_str.split
t_str.expandtabs    t_str.isupper       t_str.splitlines
t_str.find          t_str.join          t_str.startswith
t_str.format        t_str.ljust         t_str.strip
t_str.format_map    t_str.lower         t_str.swapcase
t_str.index         t_str.lstrip        t_str.title
t_str.isalnum       t_str.maketrans     t_str.translate
t_str.isalpha       t_str.partition     t_str.upper
t_str.isdecimal     t_str.replace       t_str.zfill
t_str.isdigit       t_str.rfind

字符串所有的操作函数我们可以看上面。

字符串操作函数分类

1.判断类型

方法说明
string.isspace()如果string只包含空格,则返回True
string.isalnum()如果string至少包含一个字符且所有字符都是字母或者数字则返回True
string.isalpha()如果string至少有一个字符并且所有字符都是字母则返回True
string.isdecimal()如果string只包含数字则返回True,全角数字
string.isdigit()如果string只包含数字则返回True,全角数字,(1),\u00b2
string.isnumeric()如果string只包含数字则返回True,全角数字,(1),\u00b2,汉字数字
string.istitle()如果string是标题化的(每个单词的首字母大写)则返回True
string.islower()如果string中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,True
string.isupper如果string中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,True

2.查找和替换

方法说明
string.startswitj(str)检查字符串是否以str开头,是则返回True
string.endswith(str)检查字符串是否以str结尾,是则返回True
string.find(str,start=0,end=len(string))检查str是否包含在string中,如果start和end指定范围,则检查是否包含在指定范围内,如果是则返回开始的索引值,否则返回-1
string.rfind(str,start=0,end=len(string))类似于find()函数,不过是从右边开始查找
string.index(str,start=0,end=len(string))和find()方法类似,只不过如果str不再string中会报错
string.rindex(str,start=0,end=len(string))类似于index(),不过是从右边开始
string.replace(oldstr,newstr,num=string.count(old))把string中的oldstr替换成newstr,如果num指定,则替换不超过num次

3.大小写与转换

方法说明
string.capitalize()把字符串的第一个字符大写
string.title()把字符串的每个单词首字母大写
string.lower()转换string中的所有大写字符转换为小写
string.upper()转换string中的所有小写字母转换为大写
string.swapcase()翻转string中的大小写

4.文本对齐

方法说明
string.ljust(width)返回一个原字符串左对齐,并使用空格填充至长度width的新字符
string.rjust(width)返回一个原字符串右对齐,并使用空格填充至长度width的新字符
string.center(width)返回一个原字符串居中,并使用空格填充至长度width的新字符

5.去除空白字符

方法说明
string.lstrip()截掉string左边(开始)的空白字符
string.rstrip()截掉string右边(末尾)的空白字符
string.strip()截掉string左右两边的空白字符

6.拆分和连接

方法说明
string.partition(str)把字符串string分成一个3元素的元组(str前面,str,str后面)
string.rpartition(str)类似于partition()函数,不过是从右边开始查找
string.split(str=””.num)以str为分隔符切片string,如果num有指定值,则仅分隔num+1个子字符串,str默认包含’\r’,’\t’,’\n’和空格
string.splitlines()按照行(‘\r’,’\t’,’\n’)分隔,返回一个包含各行作为元素的列表
string.join(seq)以string作为分隔符,将seq中的所有元素(的字符串表示)合并为一个新的字符串

字符串操作实操

字符串统计操作

t_str = "hello world hello python"

# 1.统计字符串长度
print(len(t_str))  # 24

# 2.统计某一个子字符串出现的次数
print(t_str.count("hel"))  # 2
print(t_str.count("abc"))  # 0

# 3.某一个子字符串出现的位置
print(t_str.index("llo"))  # 2
# 如果子字符串不存在,会报错
# print(t_str.index("abc"))

判断实操

示例1

t_str = "    \t\n"

print(t_str.isspace())  # True

示例2

# 判断字符串中是否只包含数字
str1 = "1"

print(str1)

print(str1.isdecimal())
print(str1.isdigit())
print(str1.isnumeric())

示例3

# 判断字符串中是否只包含数字
str2 = "1.1"

print(str2.isdecimal())
print(str2.isdigit())
print(str2.isnumeric())

# False
# False
# False

由此可见,这几种函数都不能判断小数

示例4

str3 = "(1)"

print(str3)
print(str3.isdecimal())
print(str3.isdigit())
print(str3.isnumeric())

# (1)
# False
# True
# True

提一下,本来结果应该是如上的,但可能是因为自己打的括号不对的原因,输出全是False

示例5
unicode 字符串

str4 = "\u00b2"

print(str4)
print(str4.isdecimal())
print(str4.isdigit())
print(str4.isnumeric())

# ²
# False
# True
# True

示例6

str5 = "一百"

print(str5)
print(str5.isdecimal())
print(str5.isdigit())
print(str5.isnumeric())

# 一百
# False
# False
# True

字符串的查找与替换实操

t_str = "hello world"

print(t_str.startswith("hel"))  # True
print(t_str.startswith("Hel"))  # False

print(t_str.endswith("ld"))  # True

# index也可以用来查找字符串,但index指定的字符串如果不存在,会报错;find不会报错,只会返回-1
print(t_str.find("llo"))  # 2
print(t_str.find("abc"))  # -1

# replace方法执行完成后,会返回一个新的字符串,不改变原来的字符串
new_str = t_str.replace("world", "python")
print(new_str)  # hello python
print(t_str)  # hello world

文本对齐

文本居中对齐默认英文空格填充

注意,如果没有指定填充内容,文本默认以英文空格进行填充

# 要求,顺序并且居中对齐输出以下内容

poem = ["早春呈水部张十八员外", "韩愈", "天街小雨润如酥", "草色遥看近却无", "最是一年春好处", "绝胜烟柳满皇都"]

for poem_str in poem:
    print("|%s|" % poem_str.center(10))

# 输出结果
"""
|    早春    |
|    韩愈    |
| 天街小雨润如酥  |
| 草色遥看近却无  |
| 最是一年春好处  |
| 绝胜烟柳满皇都  |
"""

文本居中对齐中文空格填充

注意,中文空格要切换输入法到全角

poem = ["早春", "韩愈", "天街小雨润如酥", "草色遥看近却无", "最是一年春好处", "绝胜烟柳满皇都"]

for poem_str in poem:
    print("|%s|" % poem_str.center(10, " "))

# 输出结果
"""
|    早春    |
|    韩愈    |
| 天街小雨润如酥  |
| 草色遥看近却无  |
| 最是一年春好处  |
| 绝胜烟柳满皇都  |
"""

文本左对齐

注意,如果是中文要对齐,记得是圆角,不再赘述

poem = ["早春", "韩愈", "天街小雨润如酥", 
        "草色遥看近却无", "最是一年春好处", "绝胜烟柳满皇都"]

for poem_str in poem:
    print("|%s|" % poem_str.ljust(10, " "))

"""
|早春        |
|韩愈        |
|天街小雨润如酥   |
|草色遥看近却无   |
|最是一年春好处   |
|绝胜烟柳满皇都   |
"""

文本右对齐

只需将print("|%s|" % poem_str.ljust(10, " ")) 换成rjust即可,不演示。

strip 去除空白字符

    # 要求,顺序并且居中对齐输出以下内容

poem = ["\t\n早春", "韩愈", "天街小雨润如酥", "草色遥看近却无\t\n", 
"最是一年春好处", "绝胜烟柳满皇都"]

for poem_str in poem:
    # 先使用strip方法去除字符串中的空白字符
    # 再使用center方法居中显示文本
    print("|%s|" % poem_str.strip().center(10, " "))
"""
|    早春    |
|    韩愈    |
| 天街小雨润如酥  |
| 草色遥看近却无  |
| 最是一年春好处  |
| 绝胜烟柳满皇都  |
"""

字符串拆分和拼接 split join

# 要求,将字符串中的空白字符全部去除,再使用" "作为分隔符,拼接成一个整齐的字符串

poem_str = "\t\n早春\t韩愈\t\n天街小雨润如酥\t草色遥看近却无\t\n最是一年春好处\t绝胜烟柳满皇都\t\n"
print(poem_str)

# 1.拆分字符串
poem_list = poem_str.split()
print(poem_list)
# 2.合并字符串
result = " ".join(poem_list)
print(result)

"""
早春  韩愈  
天街小雨润如酥 草色遥看近却无 
最是一年春好处 绝胜烟柳满皇都 

['早春', '韩愈', '天街小雨润如酥', '草色遥看近却无', '最是一年春好处', '绝胜烟柳满皇都']
早春 韩愈 天街小雨润如酥 草色遥看近却无 最是一年春好处 绝胜烟柳满皇都
"""

字符串的切片

切片语法和注意

切片方法适用于 字符串,列表,元组

  • 切片使用索引值来限定范围,从一个大的字符串中切出小的字符串;
  • 列表和元组都是有序的集合,都能够通过索引值获取到对应的数据;
  • 字典是一个无序的集合,使用用键值对保存数据;

比如我们对于一个”python”字符串,
顺序是0 1 2 3 4 5;倒序是-1 -2 …;

切片语法

字符串[开始索引:结束索引:步长]

注意:

  1. 指定的区间属于左闭右开型[开始索引,结束索引) –> 开始索引 >= 范围 < 结束索引;即从其实位开始,到结束位的前一位结束(不包含结束位本身)。
  2. 从头开始,开始索引数字可以省略,冒号不能省略;
  3. 到末尾结束,结束索引 数字可以省略,冒号不能省略;
  4. 步长为1,如果连续切片,数字和冒号都可以省略。

切片实操

现在有一个num_str=”0123456789″,请完成以下操作:

1.截取从 2-5 位置的字符串
2.截取从2-末尾的字符串
3.截取从 开始-5 位置的字符串
4.截取完整的字符串
5.从开始位置,每隔一个字符截取字符串
6.从索引1开始,没隔一个取一个
7.截取从 2~ 末尾-1 的字符串
8.截取字符串末尾两个字符
9.字符串的逆序

答案:

1.num[2:6]
2.num[2:]
3.num[0:6]
3.num[:6]
4.num[:]
5.num[::2]
6.num[1::2]
7.num[2:-1]
8.num[-2:]
9.num[-1::-1]
9.num[::-1]

num[0::-1]的结果:”0″

    原文作者:YifChan
    原文地址: https://www.cnblogs.com/yifchan/p/python-1-8.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞