#!/usr/bin/env python3

# -*- coding: utf-8 -*-

'''Python 字符串操作

string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等

@author: HK

'''

if __name__ == '__main__':

s = ' s dfg hjk,大 家好,。:?-_+0 '

#去两边空格及指定符号

print(s.strip())#两边都替换

# Return a copy of the string S with leading and trailing

# whitespace removed.

# If chars is given and not None, remove characters in chars instead.

print(s.lstrip('s'))#左替换

print(s.rstrip('_+0 '))#右替换

#复制字符串,类似C语言中的strcpy(sStr1,sStr2)

sStr1 = 'strcpy'

sStr2 = sStr1

sStr1 = 'strcpy2'

print(sStr2,sStr1,sStr2,sStr1)

#连接字符串,类似C语言中的strcat(sStr1,sStr2)

sStr1 = 'strcat'

sStr2 = 'append'

sStr1 += sStr2

print(sStr1)

#查找字符,类似C语言中的strchr(sStr1,sStr2)

sStr1 = 'strchr'

sStr2 = 'tr'#< 0 为未找到

nPos = sStr1.index(sStr2)

print(nPos)

#比较字符串,类似C语言中的strcmp(sStr1,sStr2),py3中取消了cmp函数cmp(sStr1,sStr2),对于int可以用表达式(a > b) - (a < b)代替cmp(a,b)

sStr1 = 'strchr'

sStr2 = 'strch'

print((sStr1 == sStr2))

#扫描字符串是否包含指定的字符,类似C语言中的strspn(sStr1,sStr2)

sStr1 = '12345678'#sStr1 and chars both in sStr1 and sStr2

sStr2 = '567'

print(sStr1.count(sStr2)>0)

print('abcde'.find('bcd') >= 0)

#字符串长度类似C语言中的strlen(sStr1)

sStr1 = 'strlen'

print(len(sStr1))

#将字符串中的大小写转换,类似C语言中的strlwr(sStr1)

sStr1 = 'JCstrlwr'

print(sStr1.upper())

sStr1 = sStr1.lower()

print(sStr1)

#追加指定长度的字符串,类似C语言中的strncat(sStr1,sStr2,n)

sStr1 = '12345'

sStr2 = 'abcdef'

n = 3

sStr1 += sStr2[0:n]

print(sStr1)

#字符串指定长度比较,类似C语言中的strncmp(sStr1,sStr2,n)

sStr1 = '12345'

sStr2 = '123bc'

n = 3

print((sStr1[0:n]==sStr2[0:n]))

#复制指定长度的字符,类似C语言中的strncpy(sStr1,sStr2,n)

sStr1 = ''

sStr2 = '12345'

n = 3

sStr1 = sStr2[0:n]

print(sStr1)

#将字符串前n个字符替换为指定的字符,类似C语言中的strnset(sStr1,ch,n)

sStr1 = '12345'

ch = 'r'

n = 3

sStr1 = n * ch + sStr1[n:]

print(sStr1)

#扫描字符串,类似C语言中的strpbrk(sStr1,sStr2)

sStr1 = 'cekjgdklab'

sStr2 = 'gka'

nPos = -1

for c in sStr1:

if c in sStr2:

nPos = sStr1.index(c)

break

print(nPos)#sStr1中第几个字符开始包含sStr2中的字符

#翻转字符串,类似C语言中的strrev(sStr1)

sStr1 = 'abcdefg'

sStr1 = sStr1[::-1]

print(sStr1)

#查找字符串,类似C语言中的strstr(sStr1,sStr2)

sStr1 = 'abcdefg'

sStr2 = 'cde'

print(sStr1.find(sStr2))#sStr1中从那个下标开始包含sStr2

#分割字符串,类似C语言中的strtok(sStr1,sStr2)

sStr1 = 'ab,cde,fgh,ijk'

sStr2 = ','

sStr1 = sStr1[sStr1.find(sStr2) + 1:]

print(sStr1)#分割一次!或者

s = 'ab,cde,fgh,ijk'

print(s.split(','))#全局分割

#连接字符串

delimiter = ','

mylist = ['Brazil', 'Russia', 'India', 'China']

print(delimiter.join(mylist))

#PHP 中 addslashes 的实现,防止SQL注入攻击

def addslashes(s):

d = {'"':'\\"', "'":"\\'", "\0":"\\\0", "\\":"\\\\"}

return ''.join(d.get(c, c) for c in s)#D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None.

#可以用return '$'.join(d.get(c, c) for c in s)做测试

s = '''John 'Johny' Doe (a.k.a. "Super Joe")\ break'''+' and \0'+'\t end'

print(s)

print(addslashes(s))

#只显示字母与数字

def OnlyCharAndNum(s,oth=''):

s2 = s.lower();

fomart = 'abcdefghijklmnopqrstuvwxyz0123456789'

for c in s2:

if not c in fomart:

s = s.replace(c,'');

return s;

print(OnlyCharAndNum("a000 aa-b"))

#截取字符串

sStr = '0123456789'

print(sStr[0:3])#截取第一位到第三位的字符

print(sStr[:])#截取字符串的全部字符

print(sStr[6:])#截取第七个字符到结尾

print(sStr[:-3])#截取从头开始到倒数第三个字符之前

print(sStr[2])#截取第三个字符

print(sStr[-1])#截取倒数第一个字符

print(sStr[::-1])#创造一个与原字符串顺序相反的字符串

print(sStr[-3:-1])#截取倒数第三位与倒数第一位之前的字符

print(sStr[-3:])#截取倒数第三位到结尾

print(sStr[:-8:-1])#逆序截取,从最后一个倒数截取至倒数第8个字符‘2’步长为1

print(sStr[:-8:-2])#逆序截取,从最后一个倒数截取至倒数第8个字符‘2’步长为2

print(sStr[:-8:-5])#逆序截取,从最后一个倒数截取至倒数第8个字符‘2’步长为2

#python 字符串替换2种方法:1用字符串本身的方法;2用正则来替换字符串

a = 'hello word'

#把a字符串里的word替换为python,1用字符串本身的replace方法

print(a.replace('word','python'))#输出的结果是hello python

#2用正则表达式来完成替换:

import re

reR = r'[wor]d' #perl写法

strinfo = re.compile(reR) #编译后运行速度更快

b = strinfo.sub('python',a)

print(b)#输出hello wopython

 

好文推荐

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。