python基础3 字符串常用方法

一、 基础数据类型 总览

int:用于计算,计数,运算等。 1,2,3,100......
str:'这些内容[]'    用户少量数据的存储,便于操作。
bool: True, False,两种状态,机器反馈给用户的对,错。
list: [1,'hello', True,[],(),{} ....] 大量的数据,各种数据类型,操作方便。列表
tuple: (1,'hello', True,[],(),{} ....),只读列表。元组
dict: 字典。大量的关联型数据。
{'name':'boy','name_list':[司徒,慈禧,李莲英...],'帅哥':{'name':'帅哥','sex':男}}
set:集合。{} 关系测试。

 

二、 int

i = 4
print(i.bit_length()) # 查询十进制转化成二进制占用的最小位数 *

'''
十进制 二进制
1 0000 0001
2 0000 0010
3 0000 0011
4 0000 0100
....
'''

三、 bool

数据类型之间的转化。 *****
#bool ---> int                         True ---> 1          False ----> 0
a = int(True)
b = int(False)
print(a,b)

#int ---> bool                    非零即True,零即为False
c = bool(1)
d = bool(-1)
e = bool(100)
f = bool(0)
print(c,d,e,f)

#str ---> bool                  空字符串的bool为False ,非空即True(空格也是字符串,不是空)
a = bool('as')
b = bool('')
print(a,b)

例子:
name = input(">>>")
if name:
  print('666')
else:
  print('无内容')


#bool ---> str
a = str(True)
b = str(False)
print(a,b,type(a))

#int ---> str
a = str(123)
print(a,type(a))

#str ---> int                        字符串都是数字组成才能转换成int
a = int('1234')
print(a,type(a))

 

四、字符串常用方法

对字符串的下面这两部分操作:形成的都是一个新的字符串,与原来的字符串没有关系。
第一部分:索引切片步长。
按照索引取值,取出来的都是一个字符,形成的字符串。
索引:索引即下标,就是字符串组成的元素从第一个开始,初始索引为0以此类推。

复制代码
a = 'ABCDEFGHIJK'
print(a[0])
print(a[1])
print(a[3])
print(a[7])
View Code
复制代码

 

切片:按切片取值,顾头不顾尾(就是包含头,不包含尾)

复制代码
a = 'ABCDEFGHIJK'
print(a[2:5])
print(a[0:4])
print(a[0:-1]) #-1就是最后一个
print(a[0:])    #默认到最后
View Code
复制代码

 

按照切片+步长

a = 'ABCDEFGHIJK'
print(a[0:5:2])
print(a[1:6:3])
View Code

 

如果想倒叙取值,加一个反向步长(负号)。

a = 'ABCDEFGHIJK'
print(a[-1:-5:-1])
print(a[-1:-6:-2])
View Code

 

第二部分:字符串的常用方法。
name = 'hello woRLd'
print(name.upper())    #upper:全大写 *****
print(name.lower())    #lower:全小写  *****
应用举例:

username = input('请输入用户名:')
code = 'ADfer'.upper()
your_code = input('请输入验证码:').upper()
print(code, your_code)
# if username == 'xiaoming' and (your_code == 'ADFER' or ..or....)
if username == 'xiaoming' and your_code == code:
    print('账号密码及验证码输入正确')

 

#startswith:判断字符串是否以什么开头 *****
#endswith:判断字符串是否以什么结尾 *****

name = 'hello woRLd'
print(name.startswith('h'))  # True
print(name.startswith('he'))  # True
print(name.startswith('h',3))  # False  从索引为3(即 l )开始判断
print(name.startswith('e',1,3))  # True   从索引为1到3(即e到l )开始判断
print(name.startswith('el', 1, 5))  # True
print(name.startswith('hello woRLd'))  # True
print(name.endswith('d'))  # True

 

 

name = 'hello woRLd'
print(name.capitalize())  # Hello world   首字母大写 其他字母变小写 ***
print(name.center(20,'*'))  # 字符串居中,前后填充自定义的字符 **
print(name.swapcase())  # swapcase 大小写翻转 **


s1 = 'hello world*handsOMe6boy'

# title 非字母隔开的每个部分的首字母大写   其他字母变小写**
print(s1.title())  # Hello World*Handsome6Boy

 

name = 'hello woRLd'
find 通过元素找索引,找到第一个就返回,没有此元素则返回-1 *****
index 通过元素找索引,找到第一个就返回,没有此元素则报错 *****

print(name.find('e'))
print(name.find('l'))
print(name.find('lo'))
print(name.find('q'))
print(name.find('L',1,-1))
print(name.index('h'))

 

#strip 默认去除字符串前后的空格,换行符,制表符 *****

复制代码
name = '\t    hello world\n'
name1 = '*xiaoming**'
name2 = 'werxiaogouwqwe'

print(name.strip())  # hello world

print(name1.strip('*'))  # xiaoming

# xiaogouwq
print(name2.strip('erw'))  # 可以指定字符 从左到右依次除去指定的字符
# 碰到第一个不是指定的字符时停止,同时从右到左
# 依次除去制定的字符,同样是碰到第一个不是指定的
# 字符即停止

# xiaogouwqwe
print(name2.lstrip('erw'))  # 只从左到右依次除去指定字符

# werxiaogouwq
print(name2.rstrip('erw'))  # 只从右到左依次除去指定字符
复制代码

 

举例:

username = input('请输入用户名:').strip()   # 'xiaoming '
if username == 'xiaoming':
    print('登陆成功...')

 

#split:将字符串分割成列表(str---> list) *****

复制代码
s1 = 'hello handsome boy'
l1 = s1.split() # 默认按照空格分隔
print(l1)

s2 = 'hello,handsome,boy'
print(s2.split(','))

s3 = ',hello,handsome,boy'
print(s3.split(','))

s4 = ' hello handsome boy'
print(s4.split(' '))

s5 = 'helloqhandqsomeqboy'

print(s5.split('q'))
print(s5.split('q',1)) # 可设置分割次数
print(s5.rsplit('q',2)) #从右到左分割2次
复制代码

 

# join 自定制连接符,将可迭代对象中的元素连接起来 *****

str1 = 'boy'
s2 = '*'.join(str1)
s3 = '_'.join(str1)
print(s2)

print(s3)

 

# replace:代替 *****

msg = 'hello'
msg1 = msg.replace('l','SB')
msg2 = msg.replace('l','SB',1) #可设置替换次数
print(msg1)
print(msg2)

 

格式化输出:format *****

复制代码
# 三种方式:
# 第一种:按顺序接收参数
s1 = '我叫{},今年{},性别{}'.format('帅哥','18','')
print(s1)   # 我叫帅哥,今年18,性别男


# 第二种:按索引接收参数
s2 = '我叫{0},今年{1},性别{2},我依然叫{0}'.format('帅哥', '18', '')
print(s2)  # 我叫帅哥,今年18,性别男,我依然叫帅哥


# 第三种:按关键字接收参数
s3 = '我叫{name},今年{age},性别{sex}'.format(age='18', name='帅哥', sex='')
print(s3)  # 我叫帅哥,今年18,性别男
复制代码

 

is 系列 *****

name = 'handsomeboy123'
name1 = 'a123'
print(name.isalnum())  # 判断是否由数字或字母组成
print(name1.isdigit()) # 判断全部是由整数组成
print(name1.isalpha()) # 判断是否全部由字母组成

 

注意(一个坑):字符串中的英文的判断isalpha(),对于unicode编码的string,
string.isalpha会根据字符串中的字符是否属于Unicode编码的LETTER区域来判断是否都由字母组成。
所以得出的结果为True,不一定表示只有26个英文字母。例如:

复制代码
s = "abc中国"
print(s.isalpha())  # True

# 若想判断字符串是否为英文字母:可以加上属性encode('UTF-8')
info = 'abcd'
print(info.encode('UTF-8').isalpha())  # True

info = 'abcd中国'
print(info.encode('UTF-8').isalpha())  # False
复制代码

 

扩展:判断字符串是否为中文
Unicdoe的4E00~9FFF区域表示中文,所以如果一个字符的编码在这个区间内,就说明它是中文。

def is_Chinese(word):
    for ch in word:
        if '\u4e00' <= ch <= '\u9fff':
            print('This is Chinese')
        else :
            print('This is not Chinese')
s = '哈哈哈哈123'
is_Chinese(s)

 

公共方法
name = 'aaabcdgf'
print(name.count('a')) # 数字符串含有多少个a,有切片
print(len(name)) # 字符串的长度

 

五、 for循环:用户按照顺序循环可迭代对象的内容。

 

复制代码
msg = '你好我好才是真的好'
for item in msg:
    print(item)  # 依次打印msg的每个字符

for item in msg:
    print(msg)  # 打印9次msg的全部内容(字符串长度就是次数)


li = ['帅哥','美女','男神','女神','傻帽']
for i in li:
    print(i)

dic = {'name':'靓仔','age':18,'sex':'man'}
for k,v in dic.items():
    print(k,v)

msg = '你好我好'
# for else:循环正常执行完毕(没有被break或者异常),会走else代码
# 否则不走else代码
for item in msg:
    print(item)
else:
    print("才是真的好")
复制代码

 

 

六、in与not in

in与not in:是判断某个元素是不是字符串的一部分
print('ab' in 'abvde')  # 返回True

 

posted @   我用python写Bug  阅读(384)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示