append()和copy()、 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)

1、append()和join()用法

append是list(列表)的方法,函数参数是可以是任意一个元素,作用是在列表的最后添加上这个新元素。例如a=[1,2,3]则a.append(4)以后a就是[1,2,3,4]
join是string(字符串)的方法,函数参数是一个由字符串组成的列表比如['a','b','c'],作用是用字符串把这个字符串列表里的字符串连接起来,比如:
a='-'

则a.join(['a','b','c'])='a-b-c'

2、copy()用法

引用是指保存的值为对象的地址。在 Python 语言中,一个变量保存的值除了基本类型保存的是值外,其它都是引用,因此对于它们的使用就需要小心一些。下面举个例子:

问题描述:已知一个列表,求生成一个新的列表,列表元素是原列表的复制

a=[1,2]
b=a
这种做法其实并未真正生成一个新的列表,b指向的仍然是a所指向的对象。这样,如果对a或b的元素进行修改,a,b的值同时发生变化。解决的方法为:
a=[1,2]
b=a[:]
这样修改a对b没有影响。修改b对a没有影响。但这种方法只适用于简单列表,也就是列表中的元素都是基本类型,如果列表元素还存在列表的话,这种方法就不适用了。原因就是,象a[:]这种处理,只是将列表元素的值生成一个新的列表,如果列表元素也是一个列表,如:a=[1,[2]],那么这种复制对于元素[2]的处理只是复制[2]的引用,而并未生成 [2]的一个新的列表复制。为了证明这一点,测试步骤如下:
>>> a=[1,[2]]
>>> b=a[:]
>>> b
[1, [2]]
>>> a[1].append(3)
>>> a
[1, [2, 3]]
>>> b
[1, [2, 3]]
可见,对a的修改影响到了b。如果解决这一问题,可以使用copy模块中的deepcopy函数。修改测试如下:
>>> import copy
>>> a=[1,[2]]
>>> b=copy.deepcopy(a)
>>> b
[1, [2]]
>>> a[1].append(3)
>>> a
[1, [2, 3]]
>>> b
[1, [2]]

有时候知道这一点是非常重要的,因为可能你的确需要一个新的列表,并且对这个新的列表进行操作,同时不想影响原来的列表。

3、Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)

 

复制字符串

Python

1 #strcpy(sStr1,sStr2)
2 sStr1 = 'strcpy'
3 sStr2 = sStr1
4 sStr1 = 'strcpy2'
5 print sStr2

连接字符串

Python

1 #strcat(sStr1,sStr2)
2 sStr1 = 'strcat'
3 sStr2 = 'append'
4 sStr1 += sStr2
5 print sStr1

查找字符

< 0 未找到

Python

1 #strchr(sStr1,sStr2)
2 sStr1 = 'strchr'
3 sStr2 = 's'
4 nPos = sStr1.index(sStr2)
5 print nPos

比较字符串

Python

1 #strcmp(sStr1,sStr2)
2 sStr1 = 'strchr'
3 sStr2 = 'strch'
4 print cmp(sStr1,sStr2)

扫描字符串是否包含指定的字符

Python

1 #strspn(sStr1,sStr2)
2 sStr1 = '12345678'
3 sStr2 = '456'
4 #sStr1 and chars both in sStr1 and sStr2
5 print len(sStr1 and sStr2)

字符串长度

Python

1 #strlen(sStr1)
2 sStr1 = 'strlen'
3 print len(sStr1)

将字符串中的大小写转换

Python

1 #strlwr(sStr1)
2 sStr1 = 'JCstrlwr'
3 sStr1 = sStr1.upper()
4 #sStr1 = sStr1.lower()
5 print sStr1

追加指定长度的字符串

Python

1 #strncat(sStr1,sStr2,n)
2 sStr1 = '12345'
3 sStr2 = 'abcdef'
4 n = 3
5 sStr1 += sStr2[0:n]
6 print sStr1

字符串指定长度比较

Python

1 #strncmp(sStr1,sStr2,n)
2 sStr1 = '12345'
3 sStr2 = '123bc'
4 n = 3
5 print cmp(sStr1[0:n],sStr2[0:n])

复制指定长度的字符

Python

1 #strncpy(sStr1,sStr2,n)
2 sStr1 = ''
3 sStr2 = '12345'
4 n = 3
5 sStr1 = sStr2[0:n]
6 print sStr1

将字符串前n个字符替换为指定的字符

Python

1 #strnset(sStr1,ch,n)
2 sStr1 = '12345'
3 ch = 'r'
4 n = 3
5 sStr1 = n * ch + sStr1[3:]
6 print sStr1

扫描字符串

Python

1 #strpbrk(sStr1,sStr2)
2 sStr1 = 'cekjgdklab'
3 sStr2 = 'gka'
4 nPos = -1
5 for c in sStr1:
6     if c in sStr2:
7         nPos = sStr1.index(c)
8         break
9 print nPos

翻转字符串

Python

1 #strrev(sStr1)
2 sStr1 = 'abcdefg'
3 sStr1 = sStr1[::-1]
4 print sStr1

查找字符串

Python

1 #strstr(sStr1,sStr2)
2 sStr1 = 'abcdefg'
3 sStr2 = 'cde'
4 print sStr1.find(sStr2)

分割字符串

Python

1 #strtok(sStr1,sStr2)
2 sStr1 = 'ab,cde,fgh,ijk'
3 sStr2 = ','
4 sStr1 = sStr1[sStr1.find(sStr2) + 1:]
5 print sStr1
6 或者
7 s = 'ab,cde,fgh,ijk'
8 print(s.split(','))

连接字符串

Python

1 delimiter = ','
2 mylist = ['Brazil', 'Russia', 'India', 'China']
3 print delimiter.join(mylist)

PHP 中 addslashes 的实现(转译成计算机可以接受的形式)

Python

1 def addslashes(s):
2     d = {'"':'\\"', "'":"\\'", "\0":"\\\0", "\\":"\\\\"}
3     return ''.join(d.get(c, c) for c in s)
4  
5 s = "John 'Johny' Doe (a.k.a. \"Super Joe\")\\\0"
6 print s
7 print addslashes(s)

只显示字母与数字

Python

1 def OnlyCharNum(s,oth=''):
2     s2 = s.lower();
3     fomart = 'abcdefghijklmnopqrstuvwxyz0123456789'
4     for c in s2:
5         if not c in fomart:
6             s = s.replace(c,'');
7     return s;
8  
9 print(OnlyStr("a000 aa-b"))

posted on 2014-04-27 22:49  rednuo  阅读(255)  评论(0)    收藏  举报

导航