2017-03-05 70 views
0

我正在使用正则表达式将文件中的数字移动到列表中,然后将所有数字加起来。我在理解什么时候需要将数值放入数值括号中成为浮点数时遇到问题。我想知道怎么把()把int更改为漂浮在值

import re 
fhand = open('regex_sum_42.txt') 
numlist = list() 
for line in fhand: 
    line = line.rstrip() 
    value = re.findall('([0-9.]+)', line) 
    num = float(value()) # Need to know what to put in the value() . 
    numlist.append(num) 
print value 
+2

1.如果的findall返回一个列表,不会是直接浇注料为float。你想要转换列表的内容吗? 2.如果'value'不是一个列表,你可能不应该叫它。只要删除括号。 – Carcigenicate

+0

're.findall'将始终返回一个列表。顺便说一下,如果你的输入是不可信的,我认为是因为你从文件中读取,这个正则表达式模式也会找到像'1234.1234.1234'这样的模式。无论如何,你应该把'map(float,value)'而不是'value()'。 – Szabolcs

回答

0

这两个问题都存在...

1:值转换的浮动,你必须遍历它把它转换成浮动或简单地将其映射值列表上。

2:你的正则表达式float和整型数字是不完美......

import re 
fhand = open('regex_sum_42.txt') 
numlist = list() 
for line in fhand: 
    line = line.rstrip() 
    value = re.findall(r'[+-]?(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?', line) 
    num = [float(i[0]) for i in value] # this is simply fetch first element from list of tuples and convert in into float       
print value