2017-03-05 48 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