python string处理常用方法


1.概述

 


string 模块提供了一些用于处理字符串类型的函数
 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
File : string - example - 1.py
  import string
text = "Monty Python's Flying Circus"
print "upper" , "=>" , string.upper(text) #大小写转换 
print "lower" , "=>" , string.lower(text)
print "split" , "=>" , string.split(text) #字符串分割 
print "join" , "=>" , string.join(string.split(text), "+" ) #字符串连接 
print "replace" , "=>" , string.replace(text, "Python" , "Java" ) #字符串替换 
print "find" , "=>" , string.find(text, "Python" ), string.find(text, "Java" ) #字符串查找 
print "count" , "=>" , string.count(text, "n" ) #字符串计数 
upper = > MONTY PYTHON'S FLYING CIRCUS
lower = > monty python's flying circus
split = > [ 'Monty' , "Python's" , 'Flying ', ' Circus']
join = > Monty + Python's + Flying + Circus
replace = > Monty Java's Flying Circus
find = > 6 - 1
count = > 3
 
import string
text = "Monty Python's Flying Circus"
print "upper" , "=>" , string.upper(text) #大小写转换
print "lower" , "=>" , string.lower(text)
print "split" , "=>" , string.split(text) #字符串分割
print "join" , "=>" , string.join(string.split(text), "+" ) #字符串连接
print "replace" , "=>" , string.replace(text, "Python" , "Java" ) #字符串替换
print "find" , "=>" , string.find(text, "Python" ), string.find(text, "Java" ) #字符串查找
print "count" , "=>" , string.count(text, "n" ) #字符串计数
upper = > MONTY PYTHON'S FLYING CIRCUS
lower = > monty python's flying circus
split = > [ 'Monty' , "Python's" , 'Flying ', ' Circus']
join = > Monty + Python's + Flying + Circus
replace = > Monty Java's Flying Circus
find = > 6 - 1
count = > 3

在 Python 1.5.2 以及更早版本中, string 使用 strop 中的函数来实现模块功能.在 Python1.6 和后继版本,更多的字符串操作都可以作为字符串方法来访问,string 模块中的许多函数只是对相对应字符串方法的封装.

 


2.使用字符串方法替代 string 模块函数

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
File : string - example - 2.py
  text = "Monty Python's Flying Circus"
“upper ", " = >", text.upper()
"lower" , "=>" , text.lower()
"split" , "=>" , text.split()
"join" , "=>" , "+" .join(text.split())
"replace" , "=>" , text.replace( "Python" , "Perl" )
"find" , "=>" , text.find( "Python" ), text.find( "Perl" )
"count" , "=>" , text.count( "n" )
upper = > MONTY PYTHON'S FLYING CIRCUS
lower = > monty python's flying circus
split = > [ 'Monty' , "Python's" , 'Flying ', ' Circus']
join = > Monty + Python's + Flying + Circus
replace = > Monty Perl's Flying Circus
find = > 6 - 1
count = > 3
 
text = "Monty Python's Flying Circus"
“upper ", " = >", text.upper()
"lower" , "=>" , text.lower()
"split" , "=>" , text.split()
"join" , "=>" , "+" .join(text.split())
"replace" , "=>" , text.replace( "Python" , "Perl" )
"find" , "=>" , text.find( "Python" ), text.find( "Perl" )
"count" , "=>" , text.count( "n" )
upper = > MONTY PYTHON'S FLYING CIRCUS
lower = > monty python's flying circus
split = > [ 'Monty' , "Python's" , 'Flying ', ' Circus']
join = > Monty + Python's + Flying + Circus
replace = > Monty Perl's Flying Circus
find = > 6 - 1
count = > 3

为了增强模块对字符的处理能力, 除了字符串方法, string 模块还包含了类型转换函数用于把字符串转换为其他类型, (如 Example 1-53 所示).

 


3.使用 string 模块将字符串转为数字

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
File : string - example - 3.py
  import string
int ( "4711" ),
string.atoi( "4711" ),
string.atoi( "11147" , 8 ), # octal 八进制 
string.atoi( "1267" , 16 ), # hexadecimal 十六进制 
string.atoi( "3mv" , 36 ) # whatever... 
print string.atoi( "4711" , 0 ),
print string.atoi( "04711" , 0 ),
print string.atoi( "0x4711" , 0 )
print float ( "4711" ),
print string.atof( "1" ),
print string.atof( "1.23e5" )
4711 4711 4711 4711 4711
4711 2505 18193
4711.0 1.0 123000.0
 
import string
int ( "4711" ),
string.atoi( "4711" ),
string.atoi( "11147" , 8 ), # octal 八进制
string.atoi( "1267" , 16 ), # hexadecimal 十六进制
string.atoi( "3mv" , 36 ) # whatever...
print string.atoi( "4711" , 0 ),
print string.atoi( "04711" , 0 ),
print string.atoi( "0x4711" , 0 )
print float ( "4711" ),
print string.atof( "1" ),
print string.atof( "1.23e5" )
4711 4711 4711 4711 4711
4711 2505 18193
4711.0 1.0 123000.0    

 大多数情况下 (特别是当你使用的是 1.6 及更高版本时) ,你可以使用 int 和float 函数代替 string 模块中对应的函数。atoi 函数可以接受可选的第二个参数, 指定数基(number base). 如果数基为0, 那么函数将检查字符串的前几个字符来决定使用的数基: 如果为 "0x," 数基将为 16 (十六进制), 如果为 "0," 则数基为 8 (八进制). 默认数基值为 10(十进制), 当你未传递参数时就使用这个值.在 1.6 及以后版本中, int 函数和 atoi 一样可以接受第二个参数. 与字符串版本函数不一样的是 , int 和 float 可以接受 Unicode 字符串对象.

 


4.一些函数剖析

 

4.1函数原型strip
声明:s为字符串,rm为要删除的字符序列

s.strip(rm) 删除s字符串中开头、结尾处,位于 rm删除序列的字符

s.lstrip(rm) 删除s字符串中开头处,位于 rm删除序列的字符

s.rstrip(rm) 删除s字符串中结尾处,位于 rm删除序列的字符

注意:

4.1.1. 当rm为空时,默认删除空白符(包括'\n', '\r', '\t', ' ')

例如:

>>> a = ' 123'
>>> a.strip()
'123'
>>> a='\t\tabc'
'abc'
>>> a = 'sdff\r\n'
>>> a.strip()
'sdff'
 4.1.2.这里的rm删除序列是只要边(开头或结尾)上的字符在删除序列内,就删除掉。

例如 :

>>> a = '123abc'

>>> a.strip('21')
'3abc' 结果是一样的
>>> a.strip('12')
'3abc'


4.2split方法


python 字符串的split方法是用的频率还是比较多的。比如我们需要存储一个很长的数据,并且按照有结构的方法存储,方便以后取数据进行处理。当然可以用json的形式。但是也可以把数据存储到一个字段里面,然后有某种标示符来分割比如我们的存储的格式的:

格式的:

姓名,年龄|另外一个用户姓名,年龄

name:haha,age:20|name:python,age:30|name:fef,age:55

那我们可以通过字符串对象的split方法切割字符串对象为列表。

a = 'name:haha,age:20|name:python,age:30|name:fef,age:55'

print a.split('|')

返回结果:

['name:haha,age:20', 'name:python,age:30', 'name:fef,age:55']

#列表对象自动用逗号分割开来

 


4.3join方法


list = [1, 2, 3, 4, 5, 6, 7]
','.join(str(i) for i in list)   #str(i) for i in list  为啥这么写可以执行成功,

 

join是string类型的一个函数,用调用他的字符串去连接参数里的列表‘,'.join调用者是',',python里面万物皆对象,','是一个string类型的对象,调用join函数,将后面的列表里的值用逗号连接成新的字符串;str(i) for i in list 这是一个映射,就是把list中每个值都转换成字符串。如果你要str(i) for i in list的结果是['1', '2', '3', '4', '5', '6', '7']
string.join(sep):  以string作为分割符,将sep中所有的元素(字符串表示)合并成一个新的字符串

>>>li = ['my','name','is','bob']

>>>' '.join(li)
'my name is bob'
 
>>>'_'.join(li)
'my_name_is_bob'
 
>>> s = ['my','name','is','bob']
>>> ' '.join(s)
'my name is bob'
 
>>> '..'.join(s)
'my..name..is..bob'

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM