python从文本文件中提取数字并将它们存储在列表列表中

时间:2016-12-09 00:36:16

标签: python regex

我有一个文本文件。我只想存储文本中的数字。例如:这是文件中的文本

ihlisdf 0.11 husj 0.2 khlkhhb,mbx blabla 2.2 fjd 3.3 0.5 jdkjkd 4.4

我需要脚本只保存列表中的数字,如此

[[0.11,0.2,2.2],[3.3,0.5,4.4]]

我尝试了以下

postemp=open('positionfile.txt','r')

str=postemp.read()
postemp.close()
c=re.findall('\d+.\d+', str)

i=0
new_list=[]
while i<len(c):
  new_list.append(c[i:i+3])
  i+=3

但它将数字存储为字符串。我需要像浮点数这样的数字,因为我必须用它们做一些微积分

2 个答案:

答案 0 :(得分:1)

我就是这样做的。

如果您要我解释任何内容,请告诉我

import numpy as np
import re
with open('positionfile.txt') as  f:
    str = f.read()
    s = re.findall('\d+\.?\d+?', str)
    # the below converts the 1 dimensional vexotr into a 2 dimensional matrix with width 3
    list = np.array(s).reshape(len(s)/3, 3).astype(float)


print list

输出:

[[ 0.1  0.2  2.2]
 [ 3.3  0.5  4.4]]

答案 1 :(得分:0)

text = 'ihlisdf 0.11 husj 0.2 khlkhhb,mbx blabla 2.2 fjd 3.3 0.5 jdkjkd 4.4'
all_num = re.findall(r'\d+\.\d+', text)
for i in range(0, len(all_num), 3):
    m = all_num[i:i+3]
    m = [float(j)for j in m]
    print(m)

出:

[0.11, 0.2, 2.2]
[3.3, 0.5, 4.4]