Python 将列表元素转换为数字
有一个包含以下三行的csv文件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 +
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"']