字符串表示
字符串通常可以使用如下形式表示:
(1)单引号:'hello world'
(2)双引号:"hello"
如果想在文本中保留双引号:'asb"hello" ',需要在单引号中间镶嵌双引号,或者双引号中间镶嵌单引号
print('hello')
print("hello")
print('abcdefg"hello"')
--------------------------------------
hello
hello
abcdefg"hello"
转义符:
print(" \' "):输出单引号
print(’ \“ ‘):输出双引号
print('\\'):反斜杠\
print(r"C:\User\zbx"):r表示去转义
文本序列-成员运算
我们之前提到过字符串也是一种不可变序列,所以我们也可以使用in/not in来判断某个字符是否在该字符串中,返回值为布尔值
(1)in
(2)not in
text = "today is a lucky day"
print('today' in text)
print('u' not in text)
------------------------------
True
True
文本连接与复制
(1)文本连接:使用+可以进行文本的连接
print("today is " + "a lucky day")
------------------------
today is a lucky day
(2)文本复制:使用*可以进行文本的复制
text = 'I am handsome '
print(text*2)
------------------------
I am handsome I am handsome
文本索引、切片、步长
字符串是不可变的序列,也可以像元组/列表那样使用索引进行使用。如下例子,获取text的前10个字符中对应的字符,并且步长为2
text = 'I am handsome '
print(text[:10:2])
---------------------
Ia ad
字符串常用方法
该小节比较重要,涉及字符串常用的各种方法的使用,后续在数据清洗方面使用较多。
(1)修改字符串:返回值为一个新的字符串
str.replace(str1, str2, count)
在str中查找str1,并将str1替换成str2,生成一个新的字符串,不会修改原始的字符串,此外count表示要修改的次数,如下例子中将字符串中3个位置对应的'ha'都修改成了'he'
st = 'I am handsome haha'
print(st)
st_new = st.replace('handsome', 'ugly')
print(st)
print(st_new)
print(st.replace('ha','he',3))
---------------------------------------
I am handsome haha
I am handsome haha
I am ugly haha
I am hendsome hehe
(2)拆分字符串:返回值为列表
非常重要,在数据清洗的时候非常重要
lst = st.split(‘,’)
st = "Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday"
print(st.split(','))
----------------------------------
['Monday', ' Tuesday', ' Wednesday', ' Thursday', ' Friday', ' Saturday', ' Sunday']
(3)字符连接列表:返回值为字符串
st.join(lst):使用字符串将列表中的元素连接起来
lst = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
res = '-'.join(lst)
print(res, type(res))
-------------------------------------
Monday-Tuesday-Wednesday-Thursday-Friday-Saturday-Sunday
(4)判断字符串以什么开头或者结尾,返回布尔值
st.startswith('Mo'):判断是否以'Mo'开头
st.endswith('day'):判断是否以'day'结尾
st = "Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday"
st.startswith('Mo')
st.endswith('day')
---------------------------------------
True
(5)字符串大小写变换
st.upper():全部大写
st.lower():全部小写
st.swapcase():大小写互换
st.capitalize():首字母大写
st = "Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday"
print(st.upper())
print(st.lower())
print(st.swapcase())
print(st.capitalize())
-----------------------------
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
monday, tuesday, wednesday, thursday, friday, saturday, sunday
mONDAY, tUESDAY, wEDNESDAY, tHURSDAY, fRIDAY, sATURDAY, sUNDAY
Monday, tuesday, wednesday, thursday, friday, saturday, sunday
(6)判断字符串是否包含数字、字母
st.isnumeric():如果st只包含数字,则返回True,否则返回False
st.isalpha():如果st所有字符都是字母则返回True,否则返回False
st1 = '2345'
st2 = 'I am 18 now'
st3 = 'helloworld'
print(st1.isnumeric())
print(st2.isnumeric())
print(st3.isalpha())
print(st2.isalpha())
print(st2.isalnum())
-------------------------------
True
False
True
False
False
(7)删除字符串的空格
st.strip():删除字符串左右/开头与结尾两侧的空格
st.rstrip():删除字符串末尾的空格
st.lstrip():删除字符串开头的空格
st.replace(" ", ""):删除所有的空格,包括字符串中间的,两端的空格
"".join(st.split()):效果等同上述replace
正则表达式:
import re
re.sub('[\s+]', '', string)
import re
st = ' Good luck to you !!!!#### '
print(st)
print(st.strip())
print(st.lstrip())
print(st.rstrip())
print(st.replace(' ',''))
print(''.join(st.split(' ')))
re.sub('[\s+]', '', st)
-------------------------------------
Good luck to you !!!!####
Good luck to you !!!!####
Good luck to you !!!!####
Good luck to you !!!!####
Goodlucktoyou!!!!####
Goodlucktoyou!!!!####
'Goodlucktoyou!!!!####'
(8)str.index()
st = 'Good luck to you !!!!#### '
st.index('Good') >>> 0
字符串的格式化:
字符串格式化主要有如下两种方式:
(1)使用%
%i, %s, %f, %g(当数比较小的时候用浮点数,比较多的时候用科学计数法)
name = 'Alice'
truth = "%s is 好人"%name
print(truth)
------------------------
Alice is 好人
(2)format
print(“今天的天气怎么样{}”.format('非常好'))
print("{0}的{2}怎么样:{1}".format('今天', '非常好', '天气'))
------------------------------------------------
今天的天气怎么样:非常好