Python 将列表元素转换为数字

Python 将列表元素转换为数字,python,list,python-3.x,Python,List,Python 3.x,有一个包含以下三行的csv文件 8.84,17.22,13.22,3.84 3.99,11.73,19.66,1.27 16.14,18.72,7.43,11.09 我正在编写一个函数,从文件中读取行并将其附加到一个空列表中,以便我可以使用该列表计算平均值 下面是我编写的代码: def my_calc(filename): mydata = [] for line in open(filename).readlines(): mydata = mydata +

有一个包含以下三行的csv文件

8.84,17.22,13.22,3.84
3.99,11.73,19.66,1.27
16.14,18.72,7.43,11.09
我正在编写一个函数,从文件中读取行并将其附加到一个空列表中,以便我可以使用该列表计算平均值

下面是我编写的代码:

def my_calc(filename):
    mydata = []
    for line in open(filename).readlines():
         mydata = mydata + line.strip().split(',')
    return mydata
['"8.84', '17.22', '13.22', '3.84"', '"3.99', '11.73', '19.66', '1.27"', '"16.14', '18.72', '7.43', '11.09"']
[8.84, 17.22, 13.22, 3.84, 3.99, 11.73, 19.66, 1.27, 16.14, 18.72, 7.43, 11.09]
以下是输出:

def my_calc(filename):
    mydata = []
    for line in open(filename).readlines():
         mydata = mydata + line.strip().split(',')
    return mydata
['"8.84', '17.22', '13.22', '3.84"', '"3.99', '11.73', '19.66', '1.27"', '"16.14', '18.72', '7.43', '11.09"']
[8.84, 17.22, 13.22, 3.84, 3.99, 11.73, 19.66, 1.27, 16.14, 18.72, 7.43, 11.09]
列表元素是字符串。如何将这些转换为浮点数

我尝试了
map()
,但收到一条错误消息“无法将
string
转换为
float

谢谢大家!

试试这个:

a = ['"8.84', '17.22', '13.22', '3.84"', '"3.99', '11.73', '19.66', '1.27"', '"16.14', '18.72', '7.43', '11.09"']
result = map(float, map(lambda x : x.strip('"'), a))
输出:

[8.84, 17.22, 13.22, 3.84, 3.99, 11.73, 19.66, 1.27, 16.14, 18.72, 7.43, 11.09]
对于python3,请执行以下操作:

result = list(map(float, map(lambda x : x.strip('"'), a)))
试试这个:

a = ['"8.84', '17.22', '13.22', '3.84"', '"3.99', '11.73', '19.66', '1.27"', '"16.14', '18.72', '7.43', '11.09"']
result = map(float, map(lambda x : x.strip('"'), a))
输出:

[8.84, 17.22, 13.22, 3.84, 3.99, 11.73, 19.66, 1.27, 16.14, 18.72, 7.43, 11.09]
对于python3,请执行以下操作:

result = list(map(float, map(lambda x : x.strip('"'), a)))

您可以修改函数以仅将项目附加为浮动:

import re

def my_calc(filename):
    mydata = []
    for line in open(filename).readlines():
        numbers = map(lambda x: float(x), re.sub("['\"]","",line).split(','))
        mydata.append(numbers)
    return mydata
这将产生以下结果:

[[8.84, 17.22, 13.22, 3.84], [3.99, 11.73, 19.66, 1.27], [16.14, 18.72, 7.43, 11.09]]

您可以修改函数以仅将项目附加为浮动:

import re

def my_calc(filename):
    mydata = []
    for line in open(filename).readlines():
        numbers = map(lambda x: float(x), re.sub("['\"]","",line).split(','))
        mydata.append(numbers)
    return mydata
这将产生以下结果:

[[8.84, 17.22, 13.22, 3.84], [3.99, 11.73, 19.66, 1.27], [16.14, 18.72, 7.43, 11.09]]
我不喜欢兰博达斯,这可以帮你


我不喜欢lambdas,这可以帮助你。

谢谢你发布你的答案

这是我的解决办法。我从你所有的解决方案中挑出了一点点来做这个

# Workable solution
mylist = []
a = ['"8.84', '17.22', '13.22', '3.84"', '"3.99', '11.73', '19.66', '1.27"', '"16.14', '18.72', '7.43', '11.09"']
for i in range(0,len(a)):
    mylist.append(a[i].lstrip('"').rstrip('"'))
    mylist = [float(x) for x in mylist]
print(mylist)
输出:

def my_calc(filename):
    mydata = []
    for line in open(filename).readlines():
         mydata = mydata + line.strip().split(',')
    return mydata
['"8.84', '17.22', '13.22', '3.84"', '"3.99', '11.73', '19.66', '1.27"', '"16.14', '18.72', '7.43', '11.09"']
[8.84, 17.22, 13.22, 3.84, 3.99, 11.73, 19.66, 1.27, 16.14, 18.72, 7.43, 11.09]

谢谢你发布你的答案

这是我的解决办法。我从你所有的解决方案中挑出了一点点来做这个

# Workable solution
mylist = []
a = ['"8.84', '17.22', '13.22', '3.84"', '"3.99', '11.73', '19.66', '1.27"', '"16.14', '18.72', '7.43', '11.09"']
for i in range(0,len(a)):
    mylist.append(a[i].lstrip('"').rstrip('"'))
    mylist = [float(x) for x in mylist]
print(mylist)
输出:

def my_calc(filename):
    mydata = []
    for line in open(filename).readlines():
         mydata = mydata + line.strip().split(',')
    return mydata
['"8.84', '17.22', '13.22', '3.84"', '"3.99', '11.73', '19.66', '1.27"', '"16.14', '18.72', '7.43', '11.09"']
[8.84, 17.22, 13.22, 3.84, 3.99, 11.73, 19.66, 1.27, 16.14, 18.72, 7.43, 11.09]

我尝试了你的解决方案,它告诉我哪里出了问题?@Jarvis-lstrip()和rstrip()帮助我摆脱了双引号(“”)。非常感谢。我尝试了你的解决方案,它告诉我哪里出了问题?@Jarvis-lstrip()和rstrip()帮助我摆脱了双引号(“”)。非常感谢。它给了我与前面相同的输出。我相信您的
csv
文件中有引号,但问题中没有列出,请尝试使用更新的代码。我添加了
strip
以清除引号。进一步添加了
re
子项,该子项将删除任何引号。请确保在尝试之前添加
import re
。它提供的输出与之前相同。我相信您的
csv
文件中有引号,但问题中未列出,请使用更新的代码尝试。我添加了
strip
以清除引号。进一步添加了
re
子项,该子项将删除任何引号。请确保在尝试之前添加
import re
。很抱歉,这一个不起作用,因为我的输出用“”包装了每个元素。你使用的结果没有这个。[““8.84”、“17.22”、“13.22”、“3.84”、“3.99”、“11.73”、“19.66”、“1.27”、“16.14”、“18.72”、“7.43”、“11.09”]抱歉,这一个不起作用,因为我的输出用“”包装了每个元素。你使用的结果没有这个。['"8.84', '17.22', '13.22', '3.84"', '"3.99', '11.73', '19.66', '1.27"', '"16.14', '18.72', '7.43', '11.09"']