字符串的处理是编译语言中不可缺少的部分,特别是在输入输出的时候,Python字符串的处理比较多样,便捷。
一.字符串拼接Python字符串的拼接结合了Java和C语言的形式,但是形式上多了很多方式
1.多字符串连接
多字符串的连接和Java很像,主要有这些形式
>>> print "hello"+"world" helloworld >>> print "hello","world" hello world >>> print "hello" "world" helloworld >>> print "hello""world" helloworld还有一种类似C语言的形式
>>> print "%s,%s" %("hello","world") hello,world2.利用list进行拼接
>>> var_list = ['tom', 'david', 'john'] >>> a=',' >>> a.join(var_list) 'tom,david,john'3.字符串乘法
>>> a='abc' >>> print a*3 abcabcabc 二.字符串截取Python的字符串类似于一个字符数组,可以根据输入的字符区间来截取字符串,主要的形式是str[start:end](包括开始的位置,不包括结束的位置)。
>>> a[1:3] 'el' >>> a[:3] 'hel' >>> a[1:] 'elloworld' >>> a[:] 'helloworld'字符位置和数组类似,从0开始,例子中很明显可以看出,如果不写开始位置,默认从头开始,不写结束位置,默认到最后,但是字符串过长,从头开始太繁琐,Python还支持从末尾开始计数确认位置,-1表示最末尾的数。
>>> str="012345" >>> str[-4:-2] '23'但是负数只用于定位,与截取的顺序和长度无关,所以可以这么使用:
>>> str[-4:4] '23' >>> str[-4:] '2345' >>> str[:-2] '0123'而且这种截取是可以设置截取时的步长的,甚至可以逆转字符串方向,交换一下开始和结尾的位置,然后将步长改成负数。第一个是开始位置,第二个是结束位置,第三个是跨度(负数表示倒着)。
>>> a="abcdef" >>> a[1:5:2] 'bd' >>> a[5:1:-1] 'fedc'另外还有一种截取方式,是利用正则表达式来截取字符串的匹配部分,将获取结果放入一个list中。如下:\d表示数字(代表0-9),+表示大于1个
>>> import re >>> str="12j33jk12 ksdjfkj23jk4h1k23h" >>> mode= re.compile("\d+") >>> mode.findall(str) ['12', '33', '12', '23', '4', '1', '23']另外还有和Java的split一样的方式,默认是空白字符,可以设置分割次数,与之相似的还有resplit。如下:split()不带参数表示已空格进行分割,[2]表示切割成2个分片
>>> b="a b c d" >>> print b.split() ['a', 'b', 'c', 'd'] >>> b="a,b,c,d" >>> print b.split(",") ['a', 'b', 'c', 'd'] >>> print b.split(",",2) ['a', 'b', 'c,d'] >>> b.rsplit(",",2) ['a,b', 'c', 'd']还有一个或许使用比较少,splitlines可以保留分隔符,参数为True保留,参数为False不保留,默认为False,但是这个不能设置分隔符,只能按照\n来分割。
>>> b="a\nb\nc\nd" >>> b.splitlines() ['a', 'b', 'c', 'd'] >>> b.splitlines(True) ['a\n', 'b\n', 'c\n', 'd'] 三.字符串查找这个一般用的不多,主要是定位某个字符或者某个字符子串起始位置在一个字符串中第一次出现的位置,一般用find方法或者index方法。
1.find/rfind