我有一串没有空白的数字:
s = '12.2321.4310.85'
我知道每个数字的格式都是F5.2(我正在从FORTRAN代码输出中读取字符串)
我需要基于s
获取以下数字列表:
[12.23,21.43,10.85]
如何在python中做到这一点?
在此先感谢您的帮助!
答案 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.99
和s = "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]