python关于分割与拼接的那些事

时间:2024-07-02 23:35:44

1.split分割

基于re模块和正则表达式对象的方法split(),以后再做学习

基于字符串的split()方法 :字符串对象的split()方法也只能处理非常简单的情况,而且不支持多个分隔符,对分隔符周围可能存在的空格也无能为力.当需要一些更为灵活的功能是,应该使用re.split()方法.

函数原型:str.split(s,num)[n]

s:表示指定的分隔符,不写的话,默认是空格(’ ‘)。如果字符串中没有给定的分隔符时,则把整个字符串作为列表的一个元素返回。

num:表示分割次数。如果指定了参数num,就会将字符串分割成num+1个子字符串,并且每一个子字符串可以赋给新的变量。

[n]:表示选取第n个分片,n表示返回的list中元素下标,从0开始的。

split()当不带参数时以空格进行分割,不管空格在哪,或者有几个.带参数时,以该参数进行分割。

2.strip()方法用来从字符串的开始和结尾处去掉字符

lstrip()从左侧开始去除字符,默认去除空格符,也可指定其他字符.

rstrip()从右侧开始去除字符,默认去除空格符,也可指定其他字符.

>>>t = '----hello===='

>>>t.lstrip('-')

'hello====='

>>>t.strip('-=')

'hello'

*注意:去除字符的操作不会对位于字符串中间的任何文本起作用

>>>'s = hello  world  \n'

>>>s = s,strip()

>>>s

'hello  world'

如果要对里面的空格执行某些操作,应该使用其他技巧.比如replace()方法或者正则表达式转换.

>>>s.replace('  ','')

'helloworld'

>>>import re

>>>re.sub('\s+',' ',s)

'hello world'

通常会遇到的情况是将去除字符的操作同某些迭代操作结合起来,比如从文件中读取文本行.如果是这样的话,那就到了生成器表达式大显身手的时候了:

with open(filename) as f:

  lines = (line.strip() for line in f)

  for line in lines:

这里表达式lines = (line.strip() for line in f)的作用是完成数据的转换.即把原始数据中每一行开头和结尾处的空格符去掉.

3.分解文件名的扩展名 

a,b = os.path.splitext(fname)

a =

b =

扩展名是通过os.path.splitext函数提取出来的,

  1. root, extension = os.path.splitext(fname)

这样,fname中的扩展名部分即.py被赋给变量extension,而其余部分则赋给了变量root。如果想得到不带点号的扩展名的话,只需使用os.path.splitext(fname)[1][1:]即可。
假设一个文件名为f,其扩展名随意,若想将其扩展名改为ext,可以使用下面的代码:

  1. newfile = os.path.splitext(f)[0] + ext

下面是一个具体的示例:

    1. >>> f = ’/some/path/case2.data_source’
    2. >>> moviefile = os.path.basename(os.path.splitext(f)[0] + ’.mpg’)
    3. >>> moviefile
    4. ’case2.mpg’

4.splitlines用法

splitlines()方法返回一个字符串的所有行, 默认splitelines参数keepends为False,意思是不保留每行结尾的\n, 而keepends为True时,分割的每 一行里尾部会有\n

      按行分割字符串,返回值为列表

去掉列表的方法:s1 =s.splitlines()[0]