Python 字符串无公共分隔符分割

1 投票
2 回答
2276 浏览
提问于 2025-04-17 14:18

我对Python还比较陌生。我使用的一个外部模拟软件会给我生成报告,报告中的数据格式如下:

1    29 Jan 2013 07:33:19.273    29 Jan 2013 09:58:10.460          8691.186

我想把上面的数据分成四个字符串,分别是:

'1', '29 Jan 2013 07:33:19.273', '29 Jan 2013 09:58:10.460', '8691.186'

我不能用str.split,因为这样会把日期分成多个字符串。看起来在数字1和第一个日期之间,以及第一个和第二个日期之间,有四个空格。我不确定这些是四个空格还是制表符(tab)。

'\t'作为分隔符进行分割并没有什么效果。如果我指定' '(四个空格)作为分隔符,我能得到前三个字符串。最后一个字符串却是一个空字符串,并且前面还有空格。在第二个日期和数字之间有10个空格。

如果有任何建议来处理这个问题,我会非常感激!

谢谢!

2 个回答

0

如果数据是固定宽度的,你可以在字符串中使用字符地址来定位。

n=str[0]
d1=str[2:26]
d2=str[27:51]
l=str[52:]

但是,如果“Jan 02”显示为“Jan 2”,那么这种方法可能就不管用了,因为字符串的宽度可能会变化。

9

你可以用一个简单的正则表达式来分割多个空格:

import re

multispace = re.compile(r'\s{2,}')  # 2 or more whitespace characters
fields = multispace.split(inputline)

示例:

>>> import re
>>> multispace = re.compile(r'\s{2,}')  # 2 or more whitespace characters
>>> multispace.split('1    29 Jan 2013 07:33:19.273    29 Jan 2013 09:58:10.460          8691.186')
['1', '29 Jan 2013 07:33:19.273', '29 Jan 2013 09:58:10.460', '8691.186']

撰写回答