字符串基础

字符串

 

索引 & 切片

  同样适用于:列表,元组等

  切片:

    截取完毕后不改变原数据类型

  列表的索引:

    索引出的部分 = 数据本身的类型

    可能是整数,字符串,元组或其他

  列表的切片:

    截取出的部分 = 列表类型

lst = [1, 'a', ['one', 'two']]

print(type(lst[0])) #<class 'int'>

print(type(lst[1])) #<class 'str'>

print(type(lst[2])) #<class 'list'>

print(type(lst[0:2])) #<class 'list'>

 

取正值 & 取负值的切片如何判断?

  首先看步长

  正值 从左到右

    → [n:m:1],m的值为索引+1

  负值 从右到左

    ← [n:m:-1],m的值为索引-1

str = 'abcdefg'

print(str[0:3:1]) #abc

print(str[-7:-4:1]) #abc

print(str[2::-1]) #cba ♦首位正值逆向索引值,不是[2:0:-1][2:-1:-1]

print(str[-5:-8:-1]) #cba

 

修改

  字符串可以被修改吗?

    不可以。

str = 'abcdefg'

str[0] = 'A'

print(str)

# TypeError: 'str' object does not support item assignment

str = '123456'

str.replace('1','999')

print(str)

# 123456

 

  有方法可以改变字符串吗?

    有。

    任何方法都不会改变原字符串,但是可以通过拼接、重新赋值来“改变”。

a = 'say hi'

print(a, id(a))

b = a[0:3] + ' hello'

print(b, id(b))

#say hi 1922527765256

#say hello 1922528764464

♦ 不同于列表,对列表使用方法,会改变原列表

lst = [1,2,3,4,5]

lst.append(6)

print(lst)

# [1, 2, 3, 4, 5, 6]

❤ 

 

字符串的方法们

  ① str.count(‘x’)  # ‘x’str中出现的次数

str = 'aabbccdd'

print('a', str.count('a'))

# a 2

  ② str.startswith(‘x’)  # 判断是否以’x’开头

      str.endswith(‘z’)  # 判断是否以’z’结尾

str = 'aabbccdd'

print('startswith-a', str.startswith('z'))

print('endswith-ccdd', str.endswith('ccdd'))

# startswith-a False

# endswith-ccdd True

 

  ③ str.find(‘x’, beg = 0, end = len(str))  #寻找 ‘x’ 元素的索引值

    ♦ 找不到则显示 -1

     str.index(‘x’, beg = 0, end = len(str))

    ♦ 找不到则报错

    ♦ ♦若str中有多个相同元素’x’ 则只返回最左一个的索引值

str = "you will when you believe."

print(str.find('u'))

print(str.index('u'))

print(str.find('s'))

print(str.index('s'))

# 2

# 2

# -1

# ValueError: substring not found

 

  ④ str.strip()  #默认删除首尾的空白符(包括’\n’, ‘\r’, ’\t’, ‘’)

     str.strip(‘xyz’)  #删除首尾的’x’和‘y’和‘z’

   str.lstrip() & str.rstrip()

str = 'xxx  Caesar  zzz'

print(str.strip('xyz'))

# ---Caesar---

 

  

  ⑤ list(str) #将字符串按各字符分割成列表

str = 'Caesar'

print(list(str))

# ['C', 'a', 'e', 's', 'a', 'r']

 

  ⑥ str.split( str = ‘  ’, num = str.count(str)) # 分隔符,分割次数

    ♦ 输出一个列表

str = 'Joseph Joestar'

print(str.split())

print(str.split('Jo'))

# ['Joseph', 'Joestar']

# ['', 'seph ', 'estar']

 

  ⑦ str.replace(‘old’, ‘new’, ’max_num’)

    ♦ 第三个参数指替换不超过max_num次数,默认全部替换

str = 'Joseph Joestar'

print(str.replace('Joseph', 'Jonathan'))

# Jonathan Joestar

 

  ⑧ str.isdigit()  # 是否全为数字

     str.isalpha()  # 是否全为字母

     str.isalnum()  # 是否只有数字/字母

    ♦ 注意是否含有空字符

str = 'Joseph Joestar'

print(str.isdigit())

print(str.isalpha())

print(str.isalnum())

# False *3

  

  ⑨ str.upper() #全字符大写(注意不改变原字符串)

      str.lower() #全字符小写

s = 'ash'

s.upper()

print(s) #ash

print(s.upper()) #ASH

 

     str.capitalize() #首字符如果是字母则大写

s = 'a, b'

s2 = ' a, b'

s3 = '1, a, b'

print(s.capitalize()) #A, b

print(s2.capitalize()) # 空格a, b 

print(s3.capitalize()) #1, a, b

 

  str.title() #字符串中单词的首字母大写

s = 'ash, ruby'

print(s.title()) #Ash, Ruby

posted @ 2019-03-19 00:26  noraccc  阅读(98)  评论(0)    收藏  举报