1 字符串介绍
Ø 字符串用单引号或双引号引起来。
Ø 一个字节可以让小于256数字占用,一个字符占用一个字节;如数字100占用一个字节,字符100占用三个字节
Ø 字符串声明后就会分配下标,从0开始;负数表示倒数第几个;
Ø len()取字符串长度
Ø 字符串之间可以相加
In [7]: name="abcdefghijk"
In [8]: name[0]
Out[8]: 'a'
In [9]: name[9]
Out[9]: 'j'
In [11]: name[len(name)-1]
Out[11]: 'k'
In [12]: name[-1] #取倒数第一个
Out[12]: 'k'
In [13]: name[-2] #取倒数第二个
Out[13]: 'j
[字符串相加,相当于连接]
In [1]: a="100"
In [2]: b="200"
In [3]: a+b
Out[3]: '100200'
In [4]: "a+b=%s"%(a+b)
Out[4]: 'a+b=100200'
1. 切片
切片是指对操作的对象截取其中一部分的操作。字符串,列表,元组都支持切换
切片的语法:[起始:结束:步长] # “包头不包尾”
步长:表示下标变化的规律
In [5]: name="abcdefghijk"
In [6]: name[0:2] # 截取ab,“包头不包尾”
Out[6]: 'ab'
In [7]: name[0:-1] #截取第1个至倒数第一个之间的字符
Out[7]: 'abcdefghij'
In [8]: name[:-1] #起始位不写,默认从0开始
Out[8]: 'abcdefghij'
In [9]: name[2:] #结束位不写,默认到最后一位
Out[9]: 'cdefghijk'
In [10]: name[0::2] #步长=2,隔一个字符取一位 ,默认为1
Out[10]: 'acegik'
【例2】‘倒着输出字符
In [22]: i=len(name)
In [23]: while i>0:
...: i-=1
...: print(name[i],end='')
...:
kjihgfedcba
In [17]: name[-1::-1]
Out[17]: 'kjihgfedcba'
2. 字符串常见函数调用操作
常用函数
1) 查找字符串位置Find和index
In [24]: my_st="hello world bjsxt laoxiao is bjsxt.com"
In [26]: my_st.find("laoxiao")
Out[26]: 18 # 输出字符串第一次出现的位置
In [27]: my_st.find("laowang")
Out[27]: -1 #没查找到,输出-1
In [28]: my_st.find("bjsxt")
Out[28]: 12
In [29]: my_st.rfind("bjsxt")
Out[29]: 29 #从右边开始查找时用rfind
In [30]: my_st.index("bjsxt") #index与find类似
Out[30]: 12
In [32]: my_st.rindex("bjsxt")
Out[32]: 29
In [31]: my_st.index("laowang") #没查找到时报错
-----------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-31-7dc70d120379> in <module>
----> 1 my_st.index("laowang")
ValueError: substring not found
2) Count字符出现次数
In [33]: my_st.count("bjsxt")
Out[33]: 2
3) Relpace字符串的替换
In [34]: my_st.replace("laoxiao","laowang")
Out[34]: 'hello world bjsxt laowang is bjsxt.com'
In [35]: my_st.replace("bjsxt","laowang",1) #数字1表示替换几次
Out[35]: 'hello world laowang laoxiao is bjsxt.com'
4) Split按照某个字符进行分割,分割后得到一个列表。可以指定分割多少段
mystr([sep])分隔符可以指定,也可以不指定。不指定分隔符,将以所有转义字符或空格分隔。
In [36]: my_st
Out[36]: 'hello world bjsxt laoxiao is bjsxt.com'
In [37]: my_st.split(" ")
Out[37]: ['hello', 'world', 'bjsxt', 'laoxiao', 'is', 'bjsxt.com']
In [39]: my_st.split("laoxiao")
Out[39]: ['hello world bjsxt ', ' is bjsxt.com']#结果无分隔符
In [40]: my_st.split(" ",2) #指标分割多少次
Out[40]: ['hello', 'world', 'bjsxt laoxiao is bjsxt.com']
In [81]: name='asdj fl asd
kjfp oiwe
uri'
In [84]: name.split() #指定分隔符,将以所有转义字符或空格分隔。
Out[84]: ['asdj', 'fl', 'asd', 'kjfp', 'oiwe', 'uri']
5) Splitlines按照换行符分隔,返回一个包含各行作为元素的列表,相当于split("
")
6) re.split()利用re模块的split函数对字符串进行分割,分割后返回的是分割部分的字符列表,可以实现一次性分割多种分割符。
>>> import re
>>> str
'abc,123 efg,567'
>>> re.split('[, ]',str)
['abc', '123', 'efg', '567']
7) Partition,按照某个字符进行分割,分割后得到一个列表。不可以指定分割多少段
In [41]: my_st.partition("laoxiao")
Out[41]: ('hello world bjsxt ', 'laoxiao', ' is bjsxt.com')#分隔后保留分隔符
In [42]: my_st.partition(" ")
Out[42]: ('hello', ' ', 'world bjsxt laoxiao is bjsxt.com')
8) Rpartition,类似于partition函数,不过是从右边开始
9) Capitalize把字符串第一个字符大写;Title把字符串的每个单词首字母大写
In [46]: my_st.capitalize()
Out[46]: 'Hello world bjsxt laoxiao is bjsxt.com'
In [45]: my_st.title()
Out[45]: 'Hello World Bjsxt Laoxiao Is Bjsxt.Com'
10) Startswith检查字符串是否以obj开头,是则返回True,否则False
11) endswith检查字符串是否以obj结束,是则返回True,否则False
In [47]: file_name="xxxx.txt"
In [49]: if file_name.endswith(".txt"):
...: print("文本")
...:
文本
12) Lower转换所有大写字符为小写
13) Upper转换反有小写字符为大写
In [51]: user_str="aBc"
In [52]: user_str.upper()
Out[52]: 'ABC'
14) Ljust mystr.ljust(width)返回字符串左对齐,并使用空格填充至长度width的新字符串
15) Rjust mystr.rjust(width)返回字符串右对齐,并使用空格填充至长度width的新字符串
16) Center mystr.center(width)返回字符串居中,并使用空格填充至长度width的新字符串
In [57]: name.ljust(50)
Out[57]: 'abcdefghijk '
In [58]: name.rjust(50)
Out[58]: ' abcdefghijk'
In [59]: name.center(50)
Out[59]: ' abcdefghijk '
17) Lstrip删除字符串左边空白字符
18) Rstrip 删除字符串右边空白字符
19) Strip删除左右两端空白字符
In [60]: test_str=" abc "
In [61]: test_str.strip()
Out[61]: 'abc'
In [62]: test_str.lstrip()
Out[62]: 'abc '
In [63]: test_str.rstrip()
Out[63]: ' abc'
20) Isalpha 如果mystr所有字符都是字母,则返回True,否则Falsemystr.isalpha()
21) Isdigit 如果mystr只包含数字,则返回True,否则Falsemystr. Isdigit ()
22) Isalnum 如果所有字符都是字母或数字,则返回True,否则False
23) Isspace如果所有字符都是空格,则返回True,否则False
24) Join mystr中每个字符后面插入list的每个元素后面,构造一个新的字符串。列表转字符串
mystr.join(list)
In [73]: my_names=["100","200","300"]
In [74]: my_names
Out[74]: ['100', '200', '300']
In [75]: "".join(my_names)
Out[75]: '100200300'
In [76]: "-".join(my_names) #用指标字符串连接
Out[76]: '100-200-300'