字符串相关方法和操作

字符串:

python里的字符串可以使用单引号或者双引号,三对引号表示;如果使用一对引号来定义字符串,当出现符号冲突时可以使用转义字符
\n 表示换行 \t 制表符,表示Tab \ 表示一个 \

字符串前加 u"" :例:u"我是含有中文字符组成的字符串。"
作用:后面字符串以 Unicode 格式 进行编码,一般用在中文字符串前面,防止因为源码储存格式问题,导致再次使用时出现乱码。

字符串前面添加 r"" : 表示字符串是原生字符串,里面的转义字符不再转义,去掉反斜杠的转义机制,常用于正则表达式,对应着re模块
例子:print(r’早上\n好’) #早上\n好

字符串前面添加 b"" : 表示后面字符串是bytes 类型,只能包含ASCII字符,后面不能跟中文,会报错(SyntaxError)
用处:
网络编程中,服务器和浏览器只认bytes 类型数据。
如:send 函数的参数和 recv 函数的返回值都是 bytes 类型

字符串常见的编码格式: gb2312 gbk(国标库) big5(繁体) utf-8(国际通用,支持语言多)
一个汉字按照 utf-8 编码转换成为二进制占三个字节,按照GBK转换,占两个字节

在 Python3 中,bytes 和 str 的互相转换方式是:
str.encode(‘utf-8’) 将字符串转换为二进制
bytes.decode(‘utf-8’) 将二进制转换为字符串

乱码的原因: 字符串转换成为二进制时使用的编码和二进制转换成为字符串的编码不一致

字符串的下标和切片:

在计算机里,索引都是从0开始的。最大的索引值是长度-1
len() 使用len内置函数,可以获取字符串的长度

切片: 使用索引从字符串里 “获取” 指定的内容
a[start:end:step] step是步长,值小于0表示从右往左获取,不写时默认为1,不能为0
字符串是不可变类型,不管任何操作都不会改变原本字符串的内容
print(a[3]) #获取字符串里下标为3的字符
print(a[4:9]) #从第四个开始,获取到第9个(包含开头,不包含结尾)
print(a) #字符串是不可变类型,不管任何操作都不会改变原本字符串的内容
print(a[3:10:2]) #从第3个开始,获取到第10个(不包含),隔一个获取一次(下标值间隔为2)

print(a[:]) 取出所有元素(没有起始位和结束位之分),默认步长为1
print(a[2:]) #从第2个开始,获取到最后一个
print(a[:8]) #从头开始,获取到第八个(不包含第8个)

print(a[9:2:-1]) #从第9个开始,从右往左 获取到第2个(不包含第二个)
print(a[-9:-2]) #从倒数第9个开始,从左往右 到倒数第2个(包含开始不包含结束)
print(a[-3:-15:-1]) #从倒数第3个开始,从右往左 到倒数第15个
print(a[::-1]) 字符串快速逆置

字符串查找相关方法:

find 查找指定的字符(串)在字符串里(第一次出现)的下标,若字符不存在会返回-1
rfind 找到最后一次出现的下标 (从右往左第一个)
print(‘word’.find(‘wo’)) #0
print(‘word’.find(‘x’)) #-1,没找到
print(‘morning’.rfind(‘n’)) #5

index/rindex 和 find/rfind 用法基本一样,区别在于find找不到会返回-1,index找不到会报错

count 用来查询指定字符串出现的次数 ;S.count(sub[, start[, end]]) -> int
print(‘good morning’.count(‘o’)) #3

in 查看指定字符串是否在字符串里,运算的结果是布尔值
print(‘m’ in ‘morning’) #True
print(‘abc’ in ‘abxcdac’) #False

字符串判断相关方法:

isalpha 判断是否全是字母
print(‘yes’.isalpha()) # True
print(‘he110’.isalpha()) # False

isdigit 判断字符串是否全是数字
print(‘hello’.isdigit()) # False
print(‘12’.isdigit()) # True
print(‘13.4’.isdigit()) # False

age = input('请输入您的年龄:')
if age.isdigit():
    age = int(age)
    print('您明年%d岁了' % (age + 1))
else:
    print('请输入整数')

isalnum 判断是否由数字和字母组成(字符串里没有标点等字符)
print(‘hello’.isalnum()) # True
print(‘123’.isalnum()) # True
print(‘he110’.isalnum()) # True
print(‘123-_*456’.isalnum()) # False

isspace 是否全是空格
print(‘hello world’.isspace()) # False
print(’ '.isspace()) #True

startswith 判断字符串是否以指定内容开始 S.startswith(prefix[, start[, end]]) -> bool
mystr = ‘今天天气好晴朗,处处好风光呀好风光’
print(mystr.startswith(‘今’)) # True
print(mystr.startswith(‘今日’)) # False

endswith 判断字符串是否以指定内容结束。
mystr = ‘今天天气好晴朗,处处好风光呀好风光’
print(mystr.endswith(‘好风光’)) #True
print(mystr.endswith(‘好日子’)) #False

字符串替换:

replace: 替换字符串里的指定字符 。count 默认值是-1,表示替换全部;如果指定次数count,则替换不会超过count次。字符串是不可变的,replace方法不会改变原有的字符串。得到的结果才是替换后的字符串。
a = ‘hello’
x = a.replace(‘e’, ‘t’)
print(a) #hello
print(x) # htllo
print(a.replace(‘l’, ‘p’, 1)) #heplo
print(a.replace(‘l’,‘p’)) #heppo

修改大小写: 修改大小写的功能只对英文有效

capitalize 第一个单词的首字母大写
mystr = ‘hello world’
print(mystr.capitalize()) # Hello world

title 每个单词的首字母大写。
mystr = ‘hello world’
print(mystr.title()) # Hello World

lower 所有都变成小写。
mystr = ‘hElLo WorLD’
print(mystr.lower()) # hello world

upper 所有都变成大写。
mystr = ‘hello world’
print(mystr.upper()) #HELLO WORLD

例子:让用户不断的输入,只有用户输入exit才停止

while True:
    a = input('输入exit退出:')
    if a.lower() == 'exit':
    #if a.upper() == 'EXIT':
    #if a.title() == 'Exit':
        break

字符串的内容分割:

split str.split(sep,maxsplit) 使用指定的字符对字符串进行分割,得到的结果是一个列表类型。sep:指定的分隔符,maxsplit:最大的分割次数。默认值是-1,表示不限次数。

mystr = ‘今天天气好晴朗,处处好风光呀好风光’
result = mystr.split() #没有指定分隔符,默认使用空格,换行等空白字符进行分隔
print(result) #[‘今天天气好晴朗,处处好风光呀好风光’] 没有空白字符,所以字符串未被分隔

result1 = mystr.split(‘好’) # 以 ‘好’ 为分隔符
print(result) # [‘今天天气’, ‘晴朗,处处’,'风光呀,‘风光’]

result2 = mystr.split(“好”,2) # 以 ‘好’ 为分隔符,最多切割成3份
print(result) # [‘今天天气’, ‘晴朗,处处’, ‘风光呀好风光’]

rsplit 用法和split基本一致,只不过是从右往左分隔。

mystr = ‘今天天气好晴朗,处处好风光呀好风光’
print(mystr.rsplit(‘好’,1)) #[‘今天天气好晴朗,处处好风光呀’, ‘风光’]

获取文件的名字和后缀:

file_name = input('请输入文件名:')
names = file_name.rsplit('.', 1)
print(names)
print('文件的名字是%s,后缀名是%s' % (names[0], names[1]))

splitlines 按照行分隔,返回一个包含各行作为元素的列表
s = ‘hello\ngood\nyes\n’
print(s.split(’\n’)) #[‘hello’, ‘good’, ‘yes’, ‘’]
print(s.splitlines()) 使用换行符来进行分割,和split(’\n’)区别在于最后的是否有一个空字符串元素;keepends参数用来表示是否保留 \n 字符,默认是False,表示不保留 。#[‘hello’, ‘good’, ‘yes’]
print(s.splitlines(True)) #[‘hello\n’, ‘good\n’, ‘yes\n’]

partition 把字符串以str分割成三部分,str前,str和str后,三部分组成一个元组

mystr = '今天天气好晴朗,处处好风光呀好风光'
print(mystr.partition('好'))  # ('今天天气', '好', '晴朗,处处好风光呀好风光')

rpartition 类似于 partition()函数,不过是从右边开始.

mystr = '今天天气好晴朗,处处好风光呀好风光'
print(mystr.rpartition('好'))   # ('今天天气好晴朗,处处好风光呀', '好', '风光')

获取文件的名字和后缀:

file_names = '2019.12.02.demo.txt'.rpartition('.')
print(file_names[0], file_names[2])

字符串空格处理:

ljust 返回指定长度的字符串,如果不够n位并在右侧使用空白字符(也可以指定字符)补全(左对齐)。
print(‘你好’.ljust(10,’+’)) #你好++++++++

rjust 返回指定长度的字符串,如果不够n位并在左侧使用空白字符补全(右对齐)。
print(‘你好’.rjust(10,’-’)) #--------你好

center 返回指定长度的字符串,如果不够n位并在两端使用空白字符补全(居中对齐)
print(‘你好’.center(10,’*’)) #****你好****

lstrip 删除字符串左边的空白字符。
mystr = ’ he llo ’
print(str.lstrip()) #he llo 只去掉了左边的空格,中间和右边的空格被保留

rstrip 删除 mystr 右边的空白字符。
mystr = ’ he llo ’
print(str.rstrip()) # he llo右边的空格被删除

strip 删除两断的空白字符。
str = ’ he llo ’
print(str.strip()) #he llo

username = input('请输入您的用户名:').strip()
if len(username) == 0:
#if not username:
print('用户名不能为空')

字符串拼接:

s.join(iterable) 把参数(可迭代对象)进行遍历,取出参数里的每一项,然后再在后面加上分隔符s
print(‘a’.join(‘hello’)) #haealalao

names=[‘zhangsan’,‘lisi’,‘wangwu’]
a=’-’.join(names)
print(a) #zhangsan-lisi-wangwu

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 C 语言中,字符数组常用来表示字符串字符串是由一串字符组成的,以 '\0' 结尾,也就是空字符。下面介绍一些常用的字符数组字符串操作方法: 1. 字符串赋值 可以使用赋值运算符 = 或 strcpy() 函数将一个字符串赋值给另一个字符串。 ``` char str1[20] = "Hello"; char str2[20]; // 使用赋值运算符 str2 = str1; // 使用 strcpy() 函数 strcpy(str2, str1); ``` 2. 字符串拼接 可以使用 strcat() 函数将两个字符串拼接起来,将第二个字符串追加到第一个字符串的末尾。 ``` char str1[20] = "Hello"; char str2[20] = "World"; strcat(str1, str2); // 将 str2 追加到 str1 的末尾 ``` 3. 字符串比较 可以使用 strcmp() 函数比较两个字符串是否相同,如果相同则返回 0,否则返回一个非零值。 ``` char str1[20] = "Hello"; char str2[20] = "Hello"; if (strcmp(str1, str2) == 0) { printf("str1 和 str2 相同\n"); } else { printf("str1 和 str2 不同\n"); } ``` 4. 字符串长度 可以使用 strlen() 函数获取字符串的长度,不包括空字符。 ``` char str[20] = "Hello World"; int len = strlen(str); // len 的值为 11 ``` 5. 字符串查找 可以使用 strchr() 函数查找字符串中第一次出现某个字符的位置,如果找到则返回该字符的地址,否则返回 NULL。 ``` char str[20] = "Hello World"; char *p = strchr(str, 'o'); // p 的值为 "o World" ``` 6. 字符串分割 可以使用 strtok() 函数将一个字符串按照某个字符分割成若干个子字符串。 ``` char str[20] = "Hello,World,!"; char *p = strtok(str, ","); // 第一次调用 strtok() 函数,传入要分割的字符串和分隔符 ',' while (p != NULL) { printf("%s\n", p); // 依次输出每个子字符串 p = strtok(NULL, ","); // 再次调用 strtok() 函数,第一个参数传入 NULL,表示继续分割上一次剩余的字符串 } ``` 以上是一些常用的字符数组字符串操作方法,还有其他的操作方法可以自行查阅相关资料。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值