【Python学习笔记】字符串管理操作
一、字符串的定义
- 被定义在一对引号中的数据
- 不可变数据类型
data_01 = "192.168.1.1"
data_02 = 'node01.linux.com'
data_03 = "/etc/fstab"
data_04 = ""
print(type(data_01), type(data_02), type(data_03), type(data_04))
<class 'str'> <class 'str'> <class 'str'> <class 'str'>
1.原始字符
- 避免特殊字符被转义
- 应用于正则表达式、
windows
文件路径
如果不加原始字符
data_dir = "C:\newfile\file01"
print(data_dir)
C: #并不是我们想要的结果,并且把\n识别成了换行符
ewfileile01
使用原始字符
data_dir = r"C:\newfile\file01"
print(data_dir)
C:\newfile\file01
二、字符串的常规处理操作
获取字符串的长度
data_01 = "/etc/fstab"
print(len(data_01))
10
字符拼接
data_01 = "/etc/fstab"
print("cat " + data_01)
cat /etc/fstab
重复字段
data = "=="
print(data * 4)
========
判断成员关系
data = "python"
print("h" in data)
True
data = "python"
print("hn" in data)
False
data = "python"
print("a" not in data)
True
索引
- 从左向右,下标从0开始
- 从右向左, 下标从-1开始
data = "python"
print(data[2])
t #从0开始输出第三个
data = "python"
print(data[-2])
o #从后往前数
切片
data = "python"
print(data[2:5])
tho #从0开始显示第三个到第四个
data = "python"
print(data[::2])
pto #从0开始每隔2个输出
data = "python"
print(data[1:6:2])
yhn #从1开始,会先显示自己,然后每隔2位输出
data = "python"
print(data[::-1])
nohtyp #反向输出
替换Y
为大写
data = "python"
print(data[0] + "Y" + data[2:6:])
pYthon
三、字符串对象操作方法
1.查看对象操作方法
print(dir(str)) #str代表字符串类型
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
2.转换大小写
data_dir = r"C:\Windows\X86"
print(data_dir.upper()) #全部转换成大写
print(data_dir.lower()) #全部转换成小写
print(data_dir.capitalize()) #首字符为大写
C:\WINDOWS\X86
c:\windows\x86
C:\windows\x86
3.判断字符开头和结尾
data_dir = r"C:\Windows\X86"
print(data_dir.startswith("C"))
True
data_dir = r"C:\Windows\X86"
print(data_dir.endswith("X86"))
True
自动补齐目录/
部分用户在输入路径的时候,有的习惯不会加上
/
dir_name = input(r"请输入目录:")
if dir_name.endswith("/"):
print(dir_name)
else:
dir_name = dir_name + "/"
print(dir_name)
请输入目录:/tmp
/tmp/
4.去除左右连段指定字符
data = " master.linux.com "
print(data.strip()) #去除空格
master.linux.com
data = " 1master.linux.com 1"
print(data.lstrip()) #去除左边的空格
1master.linux.com 1
data = "1 master.linux.com2 "
print(data.rstrip()) #删除右边的空格
1 master.linux.com2
data = "BBmaster.linux.comBB"
print(data.strip("BB")) #去除两边BB
master.linux.com
5.例子:选择的时候替换大小写
比如我们的程序只识别小写的
y
,但是不同用户习惯,会把小写y
打成大写Y
choice = input("确认/取消(y/n)? ").strip().lower()
if choice == "y":
print("确认 %s" %choice)
else:
print("取消")
确认/取消(y/n)? Y
确认 y
6.分割字符串
data = "linux unix macos windows"
print(data.split()) #空白为分隔符
['linux', 'unix', 'macos', 'windows']
取值
data = "linux unix macos windows"
print(data.split()[2]) #从0开始
macos
自定义分隔符
data = "linux.unix.macos.windows"
print(data.split("."))
['linux', 'unix', 'macos', 'windows']
取值
ip_addr = "192.168.1.1"
print(ip_addr.split(".")[0])
192
7.字符串替换
data = "hello python"
print(data.replace("o","1")) #把所有o替换成1
hell1 pyth1n
指定替换
data = "hello python"
print(data.replace("o","1",1)) #只替换第一个
hell1 python
8.判断字符串组成结构
data = "123456"
print(data.isdigit())
True
data = "abc"
print(data.islower())
True
data = "Abc"
print(data.isupper())
False
data = "ab123c"
print(data.isalnum())
True
四、遍历字符串
data = "linux"
for i in data:
print("%s" % data)
linux #因为有5个字符,所以循环了5遍
linux
linux
linux
linux
1.生成10位随机数
import random
import string
all_data = string.ascii_letters + string.digits + string.punctuation
data = ""
for i in range(20):
data = random.choice(all_data) + data
print(data)
!/s\WBT$+Go+=J^r*LmO