一: 字符串基础介绍

python中定义的字符串是个常量,一旦定义后只能使用、不能修改

1.字符串的定义:

s = ‘ aaaa’

s = “bbbb ”

s = “”“cccc”“”

注: 在python中规定了以上三种方式来定义字符串。

2. 转义字符串

转义字符描述

\(在行尾时)

续行符

\\

反斜杠符号

\'

单引号

\"

双引号

\a

响铃

\b

退格(Backspace)

\e

转义

\000

\n

换行

\v

纵向制表符

\t

横向制表符

\r

回车

\f

换页

\oyy

八进制数yy代表的字符,例如:\o12代表换行

\xyy

十进制数yy代表的字符,例如:\x0a代表换行

\other

其它的字符以普通格式输出

3. raw字符串

raw字符串格式: r"qazwsx\tedcef\nedced"  如果使用了raw,字符串中的转义字符的功能将被取消

在有些地方可以使用另一个方式来取消转义字符:如:open('c:\\temp\\test.txt','a+')  在这里temp前加两个'\\' 来取消字符转义

4. unicode字符串

Unicode是文本书写的国际标准方法,一般写法: u'I am huairen!'

5. 格式化字符串    和c中的是一样的,格式: print "name: %s, age is %d"%(nick,30)

二:字符串的基本操作

1. 连接字符串:

>>> s1

'qewr'

>>> s5

u'aa\nbb'

>>> s1+s5

u'qewraa\nbb'

连接需要使用字符:‘+’  注意:+ 左右的操作对象都必须是字符串,如果是其他类型的,那么就必须做类型转换

例:

s2 = 45

>>> s1 + s2

Traceback (most recent call last):

File "", line 1, in

TypeError: cannot concatenate 'str' and 'int' objects

>>> s1+ str(s2)        使用str进行转换

'qewr45'

2.字符串的重复

li = [1] * 5

>>> li

[1, 1, 1, 1, 1]

3. 字符串的索引

方法:    string_name[index]

string_name:字符串的名程

index: 为字符串中某个字符的位置,一个字符串中的第一个字符的位置是从0开始的,

>>> s1 = 'abcdefghijklmn'

>>> ch = s1[2]      和c中的数组引用相同,

>>> ch

'c'

4.切片

格式: s=[i:j:step]

i,j 允许是整数,正负直和0 都可以,

step, 表示方向,如果i

如果i>j ,表示逆向(-1),需要标明step为-1

如上,如果要提取一段字符串中的非连续的字符的时候需要切片,假设,提取s1中的'defghijk' 字符串,

将d作为起点,l作为终点(注,不是以k为终点的),

>>> s1 = 'abcdefghijklmn'

>>> ss = s1[3:11]    如果使用的时候没有定起点或终点,那么就会从字符串的开始或结束为起点或终点的

>>> ss

'defghijk'

注:

>>> sss = s1[0:]

>>> sss

'abcdefghijklmn'

>>> sss = s1[:0]  起点可以为0,终点不能为0但可以为空

>>> sss

>>> sss = s1[:]  允许起点和终点都不标明,

>>> sss

'abcdefghijklmn'

>>> sss = s1[-1]  如果从前向后数比较繁琐,因此python允许使用负数:

>>> sss

'n'

>>> sss = s1[-3]

>>> sss

'l'

>>> sss = s1[5:1:-1]    此处就需要标明step 为 -1

>>> sss

'fedc'            但是这样出来的字符是逆序的,(在dns中有一个逆向解析的域名)

>>> s = 'www.baidu.com'

>>> s1=s[-1:0:-1]

>>> s1

'moc.udiab.ww'  不全,

>>> s1=s[-1::-1]  不用0时,全部显示

>>> s1

'moc.udiab.www'

注:‘ ,’  表示连续打印时不会换行。

三:字符串的常用方法:

python自带的方法可以用help(str) 查看所有的方法,总结几个常见的方法。

如:

Methods defined here:

|

|  __add__(...)

|      x.__add__(y) <==> x+y

|

|  __contains__(...)

|      x.__contains__(y) <==> y in x

|

|  __eq__(...)

|      x.__eq__(y) <==> x==y

========================

>>> s = raw_input('Input char:\n')

Input char:

qwert123

>>> s.isalnum()    是否为数字和字母组成

True

>>> s.isalpha()    是否为纯字母的

False

>>> s.isdigit()      是否为纯数字的

False

===============================

1、去空格及特殊符号

代码如下:

s.strip().lstrip().rstrip(',')

2、复制字符串

代码如下:

#strcpy(sStr1,sStr2)

sStr1 = 'strcpy'

sStr2 = sStr1

sStr1 = 'strcpy2'

print sStr2

3、连接字符串

代码如下:

#strcat(sStr1,sStr2)

sStr1 = 'strcat'

sStr2 = 'append'

sStr1 += sStr2

print sStr1

4、查找字符

代码如下:

#strchr(sStr1,sStr2)

# < 0 为未找到

sStr1 = 'strchr'

sStr2 = 's'

nPos = sStr1.index(sStr2)

print nPos

5、比较字符串

代码如下:

#strcmp(sStr1,sStr2)

sStr1 = 'strchr'

sStr2 = 'strch'

print cmp(sStr1,sStr2)

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

代码如下:

#strspn(sStr1,sStr2)

sStr1 = '12345678'

sStr2 = '456'

#sStr1 and chars both in sStr1 and sStr2

print len(sStr1 and sStr2)

7、字符串长度

代码如下:

#strlen(sStr1)

sStr1 = 'strlen'

print len(sStr1)

8、将字符串中的大小写转换

代码如下:

S.lower() #小写

S.upper() #大写

S.swapcase() #大小写互换

S.capitalize() #首字母大写

String.capwords(S) #这是模块中的方法。它把S用split()函数分开,然后用capitalize()把首字母变成大写,最后用join()合并到一起

#实例:

#strlwr(sStr1)

sStr1 = 'JCstrlwr'

sStr1 = sStr1.upper()

#sStr1 = sStr1.lower()

print sStr1

9、追加指定长度的字符串

代码如下:

#strncat(sStr1,sStr2,n)

sStr1 = '12345'

sStr2 = 'abcdef'

n = 3

sStr1 += sStr2[0:n]

print sStr1

10、字符串指定长度比较

代码如下:

#strncmp(sStr1,sStr2,n)

sStr1 = '12345'

sStr2 = '123bc'

n = 3

print cmp(sStr1[0:n],sStr2[0:n])

11、复制指定长度的字符

复制代码 代码如下:

#strncpy(sStr1,sStr2,n)

sStr1 = ''

sStr2 = '12345'

n = 3

sStr1 = sStr2[0:n]

print sStr1

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

复制代码 代码如下:

#strnset(sStr1,ch,n)

sStr1 = '12345'

ch = 'r'

n = 3

sStr1 = n * ch + sStr1[3:]

print sStr1

13、扫描字符串

复制代码 代码如下:

#strpbrk(sStr1,sStr2)

sStr1 = 'cekjgdklab'

sStr2 = 'gka'

nPos = -1

for c in sStr1:

if c in sStr2:

nPos = sStr1.index(c)

break

print nPos

14、翻转字符串

复制代码 代码如下:

#strrev(sStr1)

sStr1 = 'abcdefg'

sStr1 = sStr1[::-1]

print sStr1

15、查找字符串

复制代码 代码如下:

#strstr(sStr1,sStr2)

sStr1 = 'abcdefg'

sStr2 = 'cde'

print sStr1.find(sStr2)

16、分割字符串

复制代码 代码如下:

#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(','))

17、连接字符串

复制代码 代码如下:

delimiter = ','

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

print delimiter.join(mylist)

18、PHP 中 addslashes 的实现

复制代码 代码如下:

def addslashes(s):

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

return ''.join(d.get(c, c) for c in s)

s = "John 'Johny' Doe (a.k.a. \"Super Joe\")\\\0"

print s

print addslashes(s)

19、只显示字母与数字

复制代码 代码如下:

def OnlyCharNum(s,oth=''):

s2 = s.lower();

fomart = 'abcdefghijklmnopqrstuvwxyz0123456789'

for c in s2:

if not c in fomart:

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

return s;

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

20、截取字符串

复制代码 代码如下:

str = '0123456789′

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

print str[:] #截取字符串的全部字符

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

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

print str[2] #截取第三个字符

print str[-1] #截取倒数第一个字符

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

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

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

print str[:-5:-3] #逆序截取,具体啥意思没搞明白?

21、字符串在输出时的对齐

复制代码 代码如下:

S.ljust(width,[fillchar])

#输出width个字符,S左对齐,不足部分用fillchar填充,默认的为空格。

S.rjust(width,[fillchar]) #右对齐

S.center(width, [fillchar]) #中间对齐

S.zfill(width) #把S变成width长,并在右对齐,不足部分用0补足

22、字符串中的搜索和替换

复制代码 代码如下:

S.find(substr, [start, [end]])

#返回S中出现substr的第一个字母的标号,如果S中没有substr则返回-1。start和end作用就相当于在S[start:end]中搜索

S.index(substr, [start, [end]])

#与find()相同,只是在S中没有substr时,会返回一个运行时错误

S.rfind(substr, [start, [end]])

#返回S中最后出现的substr的第一个字母的标号,如果S中没有substr则返回-1,也就是说从右边算起的第一次出现的substr的首字母标号

S.rindex(substr, [start, [end]])

S.count(substr, [start, [end]]) #计算substr在S中出现的次数

S.replace(oldstr, newstr, [count])

#把S中的oldstar替换为newstr,count为替换次数。这是替换的通用形式,还有一些函数进行特殊字符的替换

S.strip([chars])

#把S中前后chars中有的字符全部去掉,可以理解为把S前后chars替换为None

S.lstrip([chars])

S.rstrip([chars])

S.expandtabs([tabsize])

#把S中的tab字符替换没空格,每个tab替换为tabsize个空格,默认是8个

23、字符串的分割和组合

复制代码 代码如下:

S.split([sep, [maxsplit]])

#以sep为分隔符,把S分成一个list。maxsplit表示分割的次数。默认的分割符为空白字符

S.rsplit([sep, [maxsplit]])

S.splitlines([keepends])

#把S按照行分割符分为一个list,keepends是一个bool值,如果为真每行后而会保留行分割符。

S.join(seq) #把seq代表的序列──字符串序列,用S连接起来

24、字符串的mapping,这一功能包含两个函数

复制代码 代码如下:

String.maketrans(from, to)

#返回一个256个字符组成的翻译表,其中from中的字符被一一对应地转换成to,所以from和to必须是等长的。

S.translate(table[,deletechars])

#

使用上面的函数产后的翻译表,把S进行翻译,并把deletechars中有的字符删掉。需要注意的是,如果S为unicode字符串,那么就不支持

deletechars参数,可以使用把某个字符翻译为None的方式实现相同的功能。此外还可以使用codecs模块的功能来创建更加功能强大的翻译

表。

25、字符串还有一对编码和解码的函数

复制代码 代码如下:

S.encode([encoding,[errors]])

#

其中encoding可以有多种值,比如gb2312 gbk gb18030 bz2 zlib big5

bzse64等都支持。errors默认值为"strict",意思是UnicodeError。可能的值还有'ignore', 'replace',

'xmlcharrefreplace', 'backslashreplace'

和所有的通过codecs.register_error注册的值。这一部分内容涉及codecs模块,不是特明白

S.decode([encoding,[errors]])

26、字符串的测试、判断函数,这一类函数在string模块中没有,这些函数返回的都是bool值

复制代码 代码如下:

S.startswith(prefix[,start[,end]])

#是否以prefix开头

S.endswith(suffix[,start[,end]])

#以suffix结尾

S.isalnum()

#是否全是字母和数字,并至少有一个字符

S.isalpha() #是否全是字母,并至少有一个字符

S.isdigit() #是否全是数字,并至少有一个字符

S.isspace() #是否全是空白字符,并至少有一个字符

S.islower() #S中的字母是否全是小写

S.isupper() #S中的字母是否便是大写

S.istitle() #S是否是首字母大写的

27、字符串类型转换函数,这几个函数只在string模块中有

代码如下:

string.atoi(s[,base])

#base默认为10,如果为0,那么s就可以是012或0x23这种形式的字符串,如果是16那么s就只能是0x23或0X12这种形式的字符串

string.atol(s[,base]) #转成long

string.atof(s[,base]) #转成float

这里再强调一次,字符串对象是不可改变的,也就是说在python创建一个字符串后,你不能把这个字符中的某一部分改变。任何上面的函数改变了字符

串后,都会返回一个新的字符串,原字串并没有变。其实这也是有变通的办法的,可以用S=list(S)这个函数把S变为由单个字符为成员的list,这样

的话就可以使用S[3]='a'的方式改变值,然后再使用S=" ".join(S)还原成字符串

28、unicode转str

python很多时候得到的是unicode格式,比如scrapy爬虫中用xpath抽取元素时用到的extract()就是讲内容转为unicode格式,此时如果要输出到文件(txt)中时,就需要转码,不然中文会出现乱码。

例:将unicode格式的title转为普通python字符串str用“encode"

title = title.encode("utf-8")

将普通python字符串转化为unicode用“decode”

收集:http://www.jb51.net/article/47956.htm

python 字符串提取操作_python 中对字符串的操作相关推荐

  1. python中对字符串进行编码_Python 中的字符串编码

    对Python字符编码一直没搞明白,今天看<Python参考手册>再次遇到这个问题,重新整理下 Python中字符串字面量用于指定一个字符序列,其定义方法是把文本放入单引号('),双引号( ...

  2. python字符串驻留机制_Python中的字符串驻留

    C#中的字符串驻留 熟悉.NET的人都应该知道C#中的字符串驻留机制,.NET维护了一个驻留池,它会把在编译期间就相同的字符串只保留一份拷贝.如果仅在运行期间值才相同的字符串变量,.NET才会为这个2 ...

  3. python中如何修改字符串的值_python中修改字符串的5种方法!

    # str只读,那么可使用以下的方法修改 # 修改字符串常见的有五种你只要掌握一种既可 # 1.第一种是'替换法' str4 = "嘿爱多" # 字符串的元素不能修改 # str4 ...

  4. python 背景音乐程序代码_python中加背景音乐如何操作

    在python中加背景音乐的方法: 1.导入pygame资源包: 2.修改音乐的file路径: 3.使用init()方法进行初始化: 4.使用load()方法添加音乐文件: 5.使用play()方法播 ...

  5. 用python做归结演绎推理_Python中惯用的一些操作总结(未完待续)

    Python中常用的一些操作总结(未完待续) 写在前面的话 其实也没有什么可以写的,或者说完全没有价值.因为你只要动一动手指就可以在Google上找到我要写的这些东西.只是我还不习惯好久没有碰我的bl ...

  6. python替换字符的操作_Python中的字符串替换操作示例

    字符串的替换(interpolation), 可以使用string.Template, 也可以使用标准字符串的拼接. string.Template标示替换的字符, 使用"$"符号 ...

  7. python 字符串 包含 列表_python中包含字符串列表的列

    好吧,我已经试着找出这个问题的答案有一段时间了,但是结果是空的(基本上没有编写一个小的递归程序来扩展列表),我想这是因为,不管怎么说,乍一看,你试图做的并不是真的那么有效(Jimmy C关于列表可变的 ...

  8. isdigit函数python检测数字个数_Python中判断字符串是否为数字的三个方法isdecimal 、isdigit、isnumeric的差别...

    isdecimal .isdigit.isnumeric这三个字符串方法都用于判断字符串是否为数字,为什么用三个方法呢?他们的差别是什么内? isdecimal:是否为十进制数字符,包括Unicode ...

  9. python打开dat文件_python中对文件的操作

    """ 在变量,序列(这里的序列其实就是元组,列表,字符串,集合,字典)和对象中存储的数据是暂时的,程序结束就会丢失. 为了能够长世界地保存程序中的数据,需要将程序中的数 ...

最新文章

  1. matlab julian day,通用的日期格式与儒略日(julian day)格式的互相转换
  2. 十年技术,不要再迷茫
  3. 【atcoder】GP 2 [agc036C]
  4. 设置与读取C#控制台应用程序Main函数中的参数args
  5. Python装饰器(一)
  6. 吴恩达深度学习 —— 3.6 激活函数
  7. MySQL 全文搜索支持
  8. 基于智能手机的物流管理系统
  9. 以太坊:用 Solidity 写测试用例
  10. pdf英文转换成html网页,Pdf转HTML转换工具
  11. reviewboard升级
  12. “0元送设计”如何换来70亿营收?尚品宅配的新零售数字化增长研究
  13. ASP.NET资源大全
  14. python遍历文件夹生成标签数据txt文件
  15. 网络费用报销管理系统的设计与实现
  16. 图片如何高清修复?高清修复图片的方法
  17. 2021-2027全球与中国保温冰盒市场现状及未来发展趋势
  18. 如何在mac下启动mongoDB
  19. java+selenium自动化抓取51la数据
  20. 各省金融机构存贷款余额、GDP、金融化程度、城镇化率、大专以上人口比重等(2012-2019年)

热门文章

  1. C4D致富经典入门到精通(一)
  2. 机器学习(10)-随机森林案例(调参)之公共自行车使用量预测
  3. 秋招如何抱佛脚?2022最新大厂Java面试真题合集(附权威答案)
  4. C#开发BIMFACE系列9 服务端API之获取应用支持的文件类型
  5. 移动web开发,day1,字体标签、平面位移、渐变总结
  6. 模态指令和非模态指令
  7. geo 读取单细胞csv表达矩阵 单细胞 改列名 seurat
  8. 图像哈希检索背景综述(二)——哈希检索算法总结
  9. mysql高级查询之多条件的过滤查询
  10. 上财黄烨:金融科技人才的吸引与培养