之前一直对join函数和split函数因为在字符串里和os模块里作用分不清,特此总结一下,做个备忘录。
join函数有2个,一个是string.join,一个是os.path.join
string.join: 'seq1'.join('seq2') seq1为分隔符,可以为空,seq2为即将要被分隔的字符串,整体是要以seq1为分隔符来将seq2的所有的元素(这里强调一下,是每一个元素,如果是list,很好理解,如果是字符串,那就是每一个字符,如果是字典,那么就是每一个key,key是无序的,所以有时候出来是不一样的顺序,要注意)连接成一个新的字符串,注意这里是字符串。
所以可以用这样的方式来将一个list转化为一个字符串 ''.join(['q','w','e'])
os.path.join(),这个就是连接路径和文件,+ 号是连接字符串的,不可以用来连接路径和文件,这个要注意,所以下面的代码里面的+是得不到想到的路径的
import os a = '' b = ['q','w','e'] print a.join(b) a = 'D:\TA_Project' b = 'sun.py' print a+b print os.path.join(a,b) 输出为: C:\Python27\python.exe D:/TA_Project/library/test.py qwe D:\TA_Projectsun.py D:\TA_Project\sun.pysplit函数也是一样,有2个,一个是字符串的,一个是os.path.split,基本就是join的反过来了。
string.split函数,分割,默认为空格,注意这里如果没有空格,就是字符串里没有,那么就不会分割,会返回一个含有这个字符串一个元素的列表,是的,分割后返回一个list
如果后面带了数字,比如 string.split('.',1) ,表示以.号来分割,并且分割一次。
os.path.split(),这个就是来分割路径的,如果给的是一个完整的路径,那么分割后输出路径和文件名,如果给出的是一个路径名,那么分割后得到的是一个路径和空文件名,这个的返回值是一个元组,不是list。
可以看下面的例子
import os a = 'qw.er.t' print a.split() print a.split('.') print a.split('.',1) b = 'D:\\TA_Project\\' c = 'D:\TA_Project\python.py' print os.path.split(b) print os.path.split(c)
输出为:
C:\Python27\python.exe D:/TA_Project/library/test.py ['qw.er.t'] ['qw', 'er', 't'] ['qw', 'er.t'] ('D:\\TA_Project', '') ('D:\\TA_Project', 'python.py')