python学习(九)字符串

        Python 3.x完全支持中文字符,默认使用UTF8编码格式, 无论是一个数字、英文字母,还是一个汉字,都按一个字 符对待和处理。

>>> s = '中国山东烟台'
>>> len(s) #字符串长度,或者包含的字符个数
6
>>> s = '中国山东烟台ABCDE' #中文与英文字符同样对待,都算一个字符
>>> len(s)
11
>>> 姓名 = '张三' #使用中文作为变量名
>>> print(姓名) #输出变量的值
张三

    不支持下标访问

>>>test_str="good"
>>>test_str[0]="a"
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: 'str' object does not support item assignment

字符串格式化

 常用格式字符

>>> x = 1235
>>> so = "%o" % x
>>> so
"2323"
>>> sh = "%x" % x
>>> sh
"4d3"
>>> se = "%e" % x
>>> se
"1.235000e+03"
>>> chr(ord("3")+1)
"4"
>>> "%s" % 65
"65"
>>> "%s" % 65333
"65333"
>>> int('555')
555
>>> '%s'%[1, 2, 3]
'[1, 2, 3]'
>>> str((1,2,3))
'(1, 2, 3)'
>>> str([1,2,3])
'[1, 2, 3]'

 字符串常用方法

 find( )、rfind()、index()、rindex()、count()

 find()和rfind方法分别用来查找一个字符串在另一个字符串指定范围(默认 是整个字符串)中首次和最后一次出现的位置,如果不存在则返回-1;

 index()和rindex()方法用来返回一个字符串在另一个字符串指定范围中首次 和最后一次出现的位置,如果不存在则抛出异常;

 count()方法用来返回一个字符串在另一个字符串中出现的次数。

>>> s="apple,peach,banana,peach,pear"
>>> s.find("peach")
6
>>> s.find("peach",7)
19
>>> s.find("peach",7,20)
-1
>>> s.rfind('p')
25
>>> s.index('p')
1
>>> s.index('pe')
6
>>> s.count('p')
5
>>> s.count('pp')
1

split()、rsplit()、partition()、rpartition()

 split()和rsplit()方法分别用来以指定字符为分隔符,将字符串左端和右端 开始将其分割成多个字符串,并返回包含分割结果的列表;

 partition()和rpartition()用来以指定字符串为分隔符将原字符串分割为3 部分,即分隔符前的字符串、分隔符字符串、分隔符后的字符串,如果指定 的分隔符不在原字符串中,则返回原字符串和两个空字符串。

>>> s="apple,peach,banana,pear"
>>> li=s.split(",")
>>> li
["apple", "peach", "banana", "pear"]
>>> s.partition(',')
('apple', ',', 'peach,banana,pear')
>>> s.rpartition(',')
('apple,peach,banana', ',', 'pear')
>>> s.rpartition('banana')
('apple,peach,', 'banana', ',pear')
>>>s = "2014-10-31"
>>> t=s.split("-")
>>> print(t)
['2014', '10', '31']

 对于split()和rsplit()方法,如果不指定分隔符,则字 符串中的任何空白符号(包括空格、换行符、制表符等等) 都将被认为是分隔符,返回包含最终分割结果的列表。

>>> s = 'hello world \n\n My name is Dong '
>>> s.split()
['hello', 'world', 'My', 'name', 'is', 'Dong']
>>> s = '\n\nhello world \n\n\n My name is Dong '
>>> s.split()
['hello', 'world', 'My', 'name', 'is', 'Dong']
>>> s = '\n\nhello\t\t world \n\n\n My name\t is Dong '
>>> s.split()
['hello', 'world', 'My', 'name', 'is', 'Dong']

split()和rsplit()方法还允许指定最大分割次数

>>> s = '\n\nhello\t\t world \n\n\n My name is Dong '
>>> s.split(None,1)
['hello', 'world \n\n\n My name is Dong ']
>>> s.rsplit(None,1)
['\n\nhello\t\t world \n\n\n My name is', 'Dong']
>>> s.split(None,2)
['hello', 'world', 'My name is Dong ']
>>> s.rsplit(None,2)
['\n\nhello\t\t world \n\n\n My name', 'is', 'Dong']
['hello', 'world', 'My', 'name', 'is', 'Dong']
>>> s.split(maxsplit=6)
['hello', 'world', 'My', 'name', 'is', 'Dong']
>>> s.split(maxsplit=100)
['hello', 'world', 'My', 'name', 'is', 'Dong']

 调用split()方法并且不传递任何参数时,将使用任何空白 字符作为分隔符,把连续多个空白字符看作一个;明确传 递参数指定split()使用的分隔符时,情况略有不同

>>> 'a,,,bb,,ccc'.split(',') #每个逗号都被作为独立的分隔符
['a', '', '', 'bb', '', 'ccc']
>>> 'a\t\t\tbb\t\tccc'.split('\t') #每个制表符都被作为独立的分隔符
['a', '', '', 'bb', '', 'ccc']
>>> 'a\t\t\tbb\t\tccc'.split() #连续多个制表符被作为一个分隔符
['a', 'bb', 'ccc']

字符串连接join()

>>>str1="我爱你"
>>>str2=","
>>>str1.join(str2)
','
>>>str2.join(str1)
'我,爱,你'
>>>str2=" "
>>>str2.join(str1)
'我 爱 你'

lower()、upper()、capitalize()、title()、swapcase()

>>> s = "What is Your Name?"
>>> s.lower() #返回小写字符串
'what is your name?'
>>> s.upper() #返回大写字符串
'WHAT IS YOUR NAME?'
>>> s.capitalize() #字符串首字符大写
'What is your name?'
>>> s.title() #每个单词的首字母大写
'What Is Your Name?'
>>> s.swapcase() #大小写互换
'wHAT IS yOUR nAME?'

查找替换replace(),类似于“查找与替换”功能

>>> s="中国,中国"
>>> s
中国,中国
>>> s2=s.replace("中国", "中华人民共和国")
>>> s2
中华人民共和国,中华人民共和国
#测试用户输入中是否有敏感词,如果有的话就把敏感词替换为3个星号***
>>> words = ('测试', '非法', '暴力', '话')
>>> text = '这句话里含有非法内容'
>>> for word in words:
if word in text:
text = text.replace(word, '***')
>>> text
'这句***里含有***内容'

切片也适用于字符串,但仅限于读取其中的元素,不支持 字符串修改。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值