如何在有数字的地方拆分字符串?

时间:2019-05-11 12:11:46

标签: python pandas

我在熊猫数据框中有一组要拆分的字符串,只保留文本。

以下是一个字符串中的示例: “消除渲染阻止资源0.46s以下一代格式提供图像0.45s减少服务器响应时间(TTFB)0.22s删除未使用的CSS 0.15s”

这是我想在不同栏中输入的内容: ['消除渲染阻止资源','以下一代格式提供图像','减少服务器响应时间(TTFB)','删除未使用的CSS']

我想到了对'。'使用.str.split命令。在右边加上3个字符,在左边增加1个字符...但是老实说,我不知道从哪里开始。

感谢您的帮助

2 个答案:

答案 0 :(得分:3)

re.split()一起使用正则表达式

import re

re.split(r'\d\.\d+s', your_string)

\d\.\d+可以匹配任何字符串,例如0.15s,0.22s等。 示例:

s = 'Eliminate render-blocking resources 0.46s Serve images in next-gen formats 0.45s Reduce server response times (TTFB) 0.22s Remove unused CSS 0.15s'
re.split('\d\.\d+s', s)
['Eliminate render-blocking resources ', ' Serve images in next-gen formats ', ' Reduce server response times (TTFB) ', ' Remove unused CSS ', '']

此后,您可以使用删除尾随空格和空字符串。

答案 1 :(得分:1)

我们可以在此处将Series.str.split与正则表达式结合使用。我们还传递了参数expand=True,因此它为每个拆分返回一个新列:

df['Col'].str.split(r'[0-9]{1}\.[0-9]{2}s', expand=True)

输出

                                      0                                   1                                      2                    3 4
0  Eliminate render-blocking resources    Serve images in next-gen formats    Reduce server response times (TTFB)    Remove unused CSS