如何在Python中将列表转换为浮点

如何在Python中将列表转换为浮点,python,regex,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: (

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

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)
但是,我意识到修订版中的所有元素都存储为列表,当我尝试运行它时,会出现以下错误:

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

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

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

x
列表,即使
re.findall
只找到了一个匹配项。请尝试
revision\u nums.append(x[0])

如果您的行总是以
新修订开始:
您不需要正则表达式,可以使用str.startswith和str.rsplit:

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]))
它可以成为一个列表comp:

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 open(file_name) as f:
    revision_nums = []
    r = re.compile("New Revision:\s+(\d+)")
    for line in f:
         revision_nums.extend(map(float,r.findall(line)))

x[0]是一个字符串,所以我使用了
revision\u nums.append(float(x[0])