pythonsplit_python的str.split()使用方法

问题:

如何利用python将字符串"a,b,c,d\n1,2,3,4\n5,6,7,8\n9,10,11,12"转换成下表格式,如图所示:

观察到在字符串中,实际上每隔4个字符有一个换行符'\n',所以可以利用字符串的split方法进行拆分,返回一个如下的列表:

['a,b,c,d','1,2,3,4','5,6,7,8','9,10,11,12']

然后对列表中的每个元素再次使用split方法,返回如下的列表:

[['a','b','c','d'],[1,2,3,4],[5,6,7,8],[9,10,11,12]]

这样就可以利用DataFrame生成上图的表格了。

代码如下:

import pandas as pd

s = "a,b,c,d\n1,2,3,4\n5,6,7,8\n9,10,11,12"

lst = []

for sep in s.split('\n'):

• lst.append(sep.split(','))

df = pd.DataFrame(lst[1:], columns=lst[0])

对上述代码,可以利用列表推导式来进行改写一下,提升效率

import pandas as pd

s = "a,b,c,d\n1,2,3,4\n5,6,7,8\n9,10,11,12"

lst = [sep.split(',') for sep in s.split('\n')]

df = pd.DataFrame(lst[1:], columns=lst[0])

小结:

str.split(sep=None, maxsplit=-1):该方法为Python的内置方法,以列表的形式返回分割后的元素;sep:默认值是以连续的空格、换行符、制表符作为分割符

s = 'a b c'

s.split() # ['a', 'b', 'c']

备注:

1)无论元素之间的空格、换行符、制表符数量(且可以混用)(n>=1)为多少,且为连续的,都将作为一个分隔符进行分割,如:

s = 'a b cd'

s.split() # ['a', 'b', 'c']

s = 'a b \n\n cd'

s.split() # ['a', 'b' ,'c']

2)若字符串各元素之间没有空格,且sep=None,返回整个字符串

s = 'abcd'

s.split() # ['abcd']

3)若字符串内容恰好为分隔符,则会返回两个空字符列表

s = 'abcd'

s.split('abcd') # ['','']maxsplit:分割的最大次数,为分割几次的意思,从最左侧开始

s = 'a<>b<>c<>d'

#maxsplit=-1没有限制,能分几次分几次

s.split(sep='<>', maxsplit=-1) # ['a', 'b', 'c', 'd']

#maxsplit=0,表示不分割

s.split(sep='<>', maxsplit=0) # ['a<>b<>c<>d']

#maxsplit=1,表示分割一次

s.split(sep='<>', maxsplit=1) # ['a', 'b<>c<>d']

#maxsplit=10,当maxsplit设定的值超过最大可分割次数时,和maxsplit=-1一样,能分几次分几次

s.split(sep='<>', maxsplit=10) # ['a', 'b', 'c', 'd']

欢迎批评指正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值