在Python中拆分数字字符串,不带空格

时间:2019-12-13 19:25:11

标签: python string split format

我有一串没有空白的数字:

s = '12.2321.4310.85'

我知道每个数字的格式都是F5.2(我正在从FORTRAN代码输出中读取字符串)

我需要基于s获取以下数字列表:

[12.23,21.43,10.85]

如何在python中做到这一点?

在此先感谢您的帮助!

3 个答案:

答案 0 :(得分:3)

将字符串切成5个字符的块。将每个块转换为浮点数。

>>> [float(s[i:i+5]) for i in range(0, len(s), 5)]
[12.23, 21.43, 10.85]

答案 1 :(得分:0)

如果您真的确定格式,并且总是以这种方式处理,那么在循环中使用step为5可能会起作用:

s = '12.2321.4310.85'
output = []
for i in range(0,len(s),5):
    output.append(float(s[i:i+5]))
print(output)

输出:

[12.23, 21.43, 10.85]

答案 2 :(得分:0)

我认为最安全的方法是依靠.分。因为我们知道每个浮点应该有一个分数,并且总是有两个分数数字(生成1234.56的数据中可能有78.99s = "1234.5678.99"之类的值)。但是我们不确定.前有多少个数字。因此,我们可以基于.来一对一地提取值。

s = '12.2321.4310.85'
def extractFloat(s):
    # Extracts the first floating number with 2 floatings from the string
    return float( s[:s.find('.')+3]) , s[s.find('.')+3:]

l = []
while len(s) > 0:
    value, s = extractFloat(s)
    l.append(value)

print(l)
# Output: 
# [12.23, 21.43, 10.85]