如何在Python中将列表转换为float

时间:2015-05-31 23:22:33

标签: python regex

我试图写一个程序来寻找表格的行

New Revision: 39772

提取所有数字,然后找到平均值。这是我的代码:

import re
import statistics

file_name = raw_input("Enter file: ")
file = open(file_name)
revision_nums = []

for line in file:
    line = line.rstrip()
    x = re.findall("New Revision: (\d+)", line)
    if len(x) > 0:
        revision_nums.append(x)

print statistics.mean(revision_nums)

但是,我意识到revision_nums中的所有元素都存储为列表,当我尝试运行它时,我收到此错误:

TypeError: can't convert type 'list' to numerator/denominator

我试过了:

for i in revision_nums:
    for j in i:
        j = float(j)

并返回相同的错误。我做错了什么,如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

xlist,即使re.findall只找到一个匹配项。试试revision_nums.append(x[0])

答案 1 :(得分:1)

如果你的行始终以http://example.org/graph开头,你不需要正则表达式,你可以使用str.startswith和str.rsplit:

New Revision:

哪个可以成为列表comp:

file_name = raw_input("Enter file: ")
with open(file_name) as f:
    revision_nums = []
    for line in f:
        if line.startswith("New Revision:"):
            revision_nums.append(float(line.rsplit(None,1)[1]))

使用with open(file_name) as f: revision_nums = [float(line.rsplit(None,1)[1])for line in f if line.startswith("New Revision:")] 会自动关闭您的文件。

如果你必须使用re并且在行使用搜索和with中可能有许多匹配,则映射到float:

extend