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