我在txt文件中有这些数据:
1,2,3,4
如何计算平均值?这是我到目前为止,但它打印 基数为10的int()的无效文字:
data = []
with open('number.txt') as x:
for line in x:
y = line.split()
xdata = map(int,y)
data.extend(xdata)
print('Total:',sum(data))
print('Average:',(sum(data)/len(data)))
建议和帮助。谢谢。
答案 0 :(得分:3)
这是已更改的代码,因为您可以看到我们需要使用逗号分割以便它正常工作
data = []
with open('number.txt') as x:
for line in x:
y = line.split(',')
xdata = map(int,y)
data.extend(xdata)
print('Total:',sum(data))
print('Average:',(sum(data)/len(data)))
您可以在tutorialspoint
了解有关拆分的更多信息答案 1 :(得分:2)
如果您按逗号分割,则需要将分隔符指定为split
:
>>> line.split(',')
['1', '2', '3', '4']
否则,您默认按空格分割,表示y
变为
>>> line.split()
['1,2,3,4']
这是一个无效的数值,引发了错误。
您可以使用列表解析来整合代码:
with open('number.txt') as f:
data = [int(x) for line in f for x in line.split(',')]
avg = sum(data) / len(data)
答案 2 :(得分:0)
您可以从您从文件中读取的字符串中创建一个整数列表,如下所示:
from ast import literal_eval
Your_list=literal_eval(your_string)
Your_integer_list=[]
for i in Your_list:
Your_integer_list.append(int(i))
答案 3 :(得分:0)
只是添加解决方案。
您可以使用csv模块打开文件:
import csv
with open("yourfile.txt") as csv_file:
data = [int(x) for x in csv.reader(csv_file, delimiter=',')[0]]
print sum(data)
print sum(data)/len(data)
[0]
索引是获取文件中的第一行
我使用list comprehension来获取整数值
答案 4 :(得分:0)
受到@Karak's effort ast.literal_eval()
的启发,请考虑以下事项:
from ast import literal_eval
from statistics import mean
with open('number.txt') as f:
data = [i for line in f for i in literal_eval(line)]
print('Total:', sum(data))
print('Average:', mean(data))
只要文件包含以逗号分隔的数字(也可以使用浮点数,混合浮点数和整数),这将有效。如果一行上只有一个数字,则必须有一个尾随,
,因此literal_eval()
会将该行解释为元组。