Python字符串操作

拼接字符串

示例代码:

one = 'Hello world'
two = '你好世界'
print(one + '--' + two)

执行结果:
	Hello world--你好世界

注意:字符串不能与其他类型数据拼接

示例代码:

one = 'Hello world'
two = 1
print(one + '--' + 1)

执行结果:
	Traceback (most recent call last):
	  File "D:/xuexi/python/Demo.py", line 3, in <module>
	    print(one + 1)
	TypeError: can only concatenate str (not "int") to str

但是我们可以想点办法:

示例代码:

one = 'Hello world'
two = 1
print(one + '--' + str(1))

执行结果:
	Hello world--1

计算字符串长度

len(string)

示例代码:

one = 'Hello world'
print(len(one))

执行结果:
	11

注意:GBK与UTF-8长度不一样,采用GBK或GB2312时汉字占2个字节,UTF-8占3个字节。

UTF-8示例代码:

one = '嗨喽 world'
print(len(one.encode())) # 计算UTF-8编码的字符串长度

直接结果:
	12

GBK示例代码:

one = '嗨喽 world'
print(len(one.encode('gbk'))) # 计算GBK编码的字符串长度

执行结果:
	10

截取字符串

示例代码:

one = '嗨喽 world'
print(one[1])
print(one[3:])
print(one[:5])
print(one[1:6])

执行结果:
	喽
	world
	嗨喽 wo
	喽 wor

避免索引不存在时出现保存我们可以使用try except来捕获并返回我们设定的结果

示例代码:

try:
    one = '嗨喽 world'
    print(one[15])

except IndexError:
    print("指定的索引不存在") # 如果索引不存在打印这个结果

执行结果:
	指定的索引不存在

实例:

截取身份证年月日;
示例代码:

try:
    number = '510226199602284031'
    print(f'出生年月是:{number[6:14]}')

except IndexError:
    print("指定的索引不存在")

执行结果:
	出生年月是:19960228

分割字符串

str.split(sep, maxsplit)
  • str:表示要进行分割的字符串
  • sep:指定分割符,可以包含多个字符,默认为None,即所有空字符串(包括空格、换换’\n’、制表符’\t’等)
  • maxsplit:可选参数,用于指定分割次数,不指定或为-1,则分割次数没有限制,否则返回结果列表的元素个数,个数最多为maxsplit+1.

示例代码1:

str1 = '1, 2, 3'
print(str1.split(', ')) # 以字符串和空格分割,获得一个新的list

执行结果:
	['1', '2', '3']

注意:以什么分割,新的结果列表将不在包含此字符串

示例代码2:

str1 = '@小张 @小明'
str2 = str1.split(' ')
print('@的朋友有:')
for i in str2:
    print(i[1:]) # 输入没有@符合的秘籍在这里

执行结果:
	@的朋友有:
	小张
	小明

更多split用法参考

合并字符串join()

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

join()方法语法:

str.join(sequence)

以下实例展示了join()的使用方法:

s1 = "-"
s2 = ""
seq = ("a", "b", "c", "d", "e", "f") # 字符串序列
print (s1.join( seq ))
print (s2.join( seq ))

执行结果:
	a-b-c-d-e-f
	abcdef

统计字符串出现次数(count())

str.count(sub[, start[, end]])

执行结果:

str1 = '1, 2, 3, 4, 1'
print('1出现的次数:', str1.count('1'))
print('","符号出现的次数:', str1.count(','))

执行结果:
	1出现的次数: 2
	","符号出现的次数: 4

字符串中查找字符

str.find(sub[, start[, end]])
  • str:表示原字符串
  • sub:表示要检索的字符串
  • start:可选参数,表示检索范围的起始位置的索引,如果不指定,则从零开始。
  • end:可选参数,表示检索范围的结束位置的索引,如果不指定,则一直检索到末尾。

示例代码:

str1 = '嗨喽,你好'
print('"你"在字符串中的索引是:', str1.find('你'))

执行结果:
	"你"在字符串中的索引是: 3

也可使用index()方法

str.index(sub[, start[, end]])

注意:使用index方法如果字符串不存在会抛出异常

判断是否xx开始

使用startswith
示例代码:

String = "12345 上山打老虎"
if str(String).startswith('1'): #判断String是否以“虎”结尾
    print("有老虎")
else:
    print("没老虎")

执行结果:
	有老虎

判断是否xx结尾

使用endswith
示例代码1:

String = "12345 上山打老虎"
if str(String).endswith('虎'): #判断String是否以“虎”结尾
    print("有老虎")
else:
    print("没老虎")

执行结果:
	有老虎

示例代码2:

"""
作者:Wei
日期:2018/9/15 17:20
Python版本:3.7
"""
#小游戏:数数1到99遇到的数是7结尾或这个数是7的倍数,就拍一下腿,计算到99共拍多少下腿
count = 0
for number in range(1,100):  # range(100)不包含100
    if number % 7 == 0 or str(number).endswith('7'):
        count += 1
        continue
print(f"1到99共拍腿{count}次")

执行结果:
	1到99共拍腿22次

子母大小写转换

将字符串转换为小写

示例代码:

str1 = 'HELLO World'
print(str1.lower())

执行结果:
	hello world

将字符串转换为大写

示例代码:

str1 = 'HELLO World'
print(str1.upper())

执行结果:
	HELLO WORLD

去除字符串左右空格和特殊字符

str.strip([chars])

str:需要去除空格的字符串
chars:可选参数,用户指定要去除的字符串,可以指定多个。

示例代码:

str1 = '+HELLO World+'
print(str1.strip('+')) # 去除首尾"+"

执行结果:
	HELLO World

去除字符串左侧空格或字符串

str.lstrip([chars])

示例代码:

str1 = '+HELLO World+'
print(str1.lstrip('+')) # 去除首尾"+"

执行结果:
	HELLO World+

去除字符串右侧空格或字符串

str.rstrip([chars])

示例代码:

str1 = '+HELLO World+'
print(str1.rstrip('+')) # 去除首尾"+"

执行结果:
	+HELLO World
posted @ 2018-09-23 21:55  每一天,为明天。  阅读(76)  评论(0)    收藏  举报