python基础(4) for循环、字符串的基本使用和常见方法

字符串

字符串的定义

  • 双引号或者单引号中的数据,就是字符串
  • 如果使用一对引号来定义字符串,当出现符号冲突时可以使用转义字符
  • 使用三个单引号、双引号定义的字符串可以包裹任意文本
  • 字符串可迭代
    a = "I'm Tom"  # 一对双引号 
    b = 'Tom said:"I am Tom"'  # 一对单引号
    c = 'Tom said:"I\'m Tom"'  # 转义字符
    d = '''Tom said:"I'm Tom"'''  # 三个单引号
    e = """Tom said:"I'm Tom" """  # 三个双引号

字符串的输出

demo:

name = 'xiaoming'  #将字符串保存在变量 name 中 
print(name)  # 输出变量 name 中的内容

print('xiaoming')  # 直接输出 xiaoming

字符串的输出

示例:

    userName = input('请输入用户名:')
    print("用户名为:%s" % userName)

    password = input('请输入密码:')
    print("密码为:%s" % password)
  • 注意: input 获取的数据都是字符串

索引和切片

通过索引可以找到相应的数据,在计算机中 索引从0开始

   name = 'abcdef'

   print(name[0])
   print(name[1])
   print(name[2])

运行结果:
a
b
c

切片

切片就是截取对象的一部分数据。字符串、列表、字典都可以切片

格式:

[[起始]:[结束]:[步长]] # 默认步长为1 起始结束区间可以去到起始值取不到结束值

示例:

# 索引是通过下标取某一个元素
# 切片是通过下标去某一段元素

s = 'Hello World!'
print(s)

print(s[4])  # o 字符串里的第4个元素

print(s[3:7])  # lo W 包含下标 3,不含下标 7

print(s[:]) # Hello World! 取出所有元素(没有起始位和结束位之分),默认步长为1

print(s[1:]) # ello World! 从下标为1开始,取出 后面所有的元素(没有结束位)

print(s[:4])  # Hell 从起始位置开始,取到 下标为4的前一个元素(不包括结束位本身)

print(s[:-1]) # Hello World 从起始位置开始,取到 倒数第一个元素(不包括结束位本身)

print(s[-4:-1]) # rld 从倒数第4个元素开始,取到 倒数第1个元素(不包括结束位本身)

print(s[1:5:2]) # el 从下标为1开始,取到下标为5的前一个元素,步长为2(不包括结束位本身)

print(s[7:2:-1]) # ow ol 从下标为7的元素开始(包含下标为7的元素),倒着取到下标为2的元素(不包括下标为2的元素) 

# python 字符串快速逆置
print(s[::-1])  # !dlroW olleH 从后向前,按步长为1进行取值

字符串常见方法

方法名 描述
len() 获取字符串长度
find() 查找指定内容是否在字符串中,会返回指定内容第一次出现的索引,不存在就返回 -1。
rfind() 与find()类似,不过是从右边开始查找。
index() 与find()方法一样,只不过index()方法未找到时会报错。
rindex() 与rfind()类似,不过是从右边开始查找。
startswith() 判断字符串是否以指定内容开始。
endswith() 判断字符串是否以指定内容结束。
isalpha() 判断字符串是否是纯字母。
isdigit() 判断字符串是否是纯数字。
isalnum() 判断是否由字母数字组成,只要出现非数字和字母就返回False
isspace() 如果 数据中只包含空格,则返回 True,否则返回 False.
count() 返回 指定内容在指定区间之间 出现的次数。不指定区间 默认全部
replace() 替换字符串中指定的内容,可以指定替换次数,默认替换全部
split() 以指定字符串为分隔符切片,如果 字符串中有指定值,则仅分隔 字符串+1 个子字符串。返回的结果是一个列表。
rsplit() 用法和split基本一致,只不过是从右往左分隔。
splitlines() 按照行分隔,返回一个包含各行作为元素的列表。
partition() 将字符串切片成三个部分,指定字符前、指定字符、指定字符后,返回的是一个元组
rpartition() 与 partition 类似 只不过是从右边开始
capitalize() 第一个单词的首字母大写
title() 每个单词的首字母大写
lower() 都变成小写
upper() 都变成大写
ljust() 返回指定长度的字符串,并在右侧使用空白字符补全(左对齐)。
rjust() 返回指定长度的字符串,并在左侧使用空白字符补全(右对齐)。
center() 返回指定长度的字符串,并在两端使用空白字符补全(居中对齐)
lstrip() 删除 字符串左边的空白字符。
rstrip() 删除 字符串右边的空白字符。
strip() 删除两断的空白字符。
join() S.join(iterable)把参数进行遍历,取出参数里的每一项,然后再在后面加上S
  • 注意: 在python中,字符串是不可变的! 所有字符串相关的方法,都不会改变原有的字符串,都是返回一个新的结果,可以用变量接收

示例:

#find 和 rfind 的用法
mystr = '今天天气好晴朗,处处好风光呀好风光'
print(mystr.find('好风光'))  # 10 '好风光'第一次出现时,'好'所在的位置
print(mystr.find('你好'))  # -1  '你好'不存在,返回 -1
print(mystr.find('风', 12))  # 15 从下标12开始查找'风',找到风所在的位置试15
print(mystr.find('风光',1,10)) # -1 从下标1开始到12查找"风光",未找到,返回 -1
print(mystr.rfind('好')) # 14


#startswith 和 endswith 的用法
print(mystr.startswith('今'))  # True
print(mystr.startswith('今日')) # False
print(mystr.endswith('好风光')) #True
print(mystr.endswith('好日子')) #False


# isalpha 、 isdigit、 isalnum 的用法
mystr = 'hello'
print(mystr.isalpha())  # True
mystr = 'hello world'
print(mystr.isalpha()) # False 因为中间有空格

mystr = '1234'
print(mystr.isdigit()) # True
mystr = '123.4'
print(mystr.isdigit()) # False
mystr = '-1234'
print(mystr.isdigit()) # False

mystr = 'abcd'
print(mystr.isalnum())  # True
mystr = '1234'
print(mystr.isalnum()) # True
mystr = 'abcd1234'
print(mystr.isalnum()) # True
mystr = 'abcd1234_'
print(mystr.isalnum()) # False


# isspace 的用法
mystr = ''
print(mystr.isspace()) # False mystr是一个空字符串
mystr = '  '
print(mystr.isspace()) # True 只有空格
mystr = ' d'
print(mystr.isspace()) # False 除了空格外还有其他内容


# count 的用法
mystr = '今天天气好晴朗,处处好风光呀好风光'
print(mystr.count('好'))  # 3. '好'字出现三次


# replace 的用法
mystr = '今天天气好晴朗,处处好风光呀好风光'
newstr = mystr.replace('好', '坏')
print(mystr)  # 今天天气好晴朗,处处好风光呀好风光  原字符串未改变!
print(newstr)  # 今天天气坏晴朗,处处坏风光呀坏风光 得到的新字符串里,'好'被修改成了'坏'
newstr = mystr.replace('好','坏',2)  # 指定了替换的次数
print(newstr) # 今天天气坏晴朗,处处坏风光呀好风光 只有两处的'好'被替换成了'坏'


# split、rsplit 的用法
mystr = '今天天气好晴朗,处处好风光呀好风光'
result = mystr.split() # 没有指定分隔符,默认使用空格,换行等空白字符进行分隔
print(result) #['今天天气好晴朗,处处好风光呀好风光'] 没有空白字符,所以,字符串未被分隔
result = mystr.split('好')  # 以 '好' 为分隔符
print(result) # ['今天天气', '晴朗,处处','风光呀,'风光']
result = mystr.split("好",2) # 以 '好' 为分隔符,最多切割成3份
print(result) # ['今天天气', '晴朗,处处', '风光呀好风光']

mystr = '今天天气好晴朗,处处好风光呀好风光'
print(mystr.rsplit('好',1))  #['今天天气好晴朗,处处好风光呀', '风光']
mystr = 'hello \nworld'
print(mystr.splitlines())


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


# capitalize、title、lower、upper 的用法
mystr = 'hello world'
print(mystr.capitalize()) # Hello world
mystr = 'hello world'
print(mystr.title()) # Hello World
mystr = 'hElLo WorLD'
print(mystr.lower()) # hello world
mystr = 'hello world'
print(mystr.upper())  #HELLO WORLD


# ljust、rjust、center 的用法
str = 'hello'
print(str.ljust(10))  # hello     在右边补了五个空格
str = 'hello'
print(str.rjust(10))  #      hello在左边补了五个空格
str = 'hello'
print(str.center(10))  #  hello   两端加空格,让内容居中


# lstrip、rstrip、strip的用法
mystr = '    he   llo      '
print(str.lstrip())  #he   llo      只去掉了左边的空格,中间和右边的空格被保留
mystr = '    he   llo      '
print(str.rstrip())  #    he   llo右边的空格被删除
str = '    he   llo      '
print(str.strip())  #he   llo


# join 的用法
mystr = 'a'
print(mystr.join('hxmdq'))  #haxamadaq  把hxmd一个个取出,并在后面添加字符a. 最后的 q 保留,没有加 a
print(mystr.join(['hi','hello','good']))  #hiahelloagood

txt = '_'
print(txt.join(['hi','hello','good'])) #hi_hello_good
print(txt.join(('good','hi','hello'))) #good_hi_hello


身份运算符

isin is 比较的是内存地址,in 比较的值

#  in  is

print('x' in 'hello')  # False
print('ac' in 'abc')  # False
print('ac' not in 'abc')  # True

names = ['chris', 'jerry', 'henry', 'tony', 'tom']
print('helen' in names)  # False
print('tony' in names)

words1 = ['hello', 'hi', 'good', 'yes']
words2 = ['hello', 'hi', 'good', 'yes']

# == 比较的是值
print(words1 == words2)  # True

# is 比较的是两个对象的内存地址
print(words1 is words2)  # False

你可能感兴趣的:(python基础(4) for循环、字符串的基本使用和常见方法)