用逗号分隔文本文件中的总数

时间:2017-11-01 11:50:31

标签: python file

我在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)))

建议和帮助。谢谢。

5 个答案:

答案 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来获取整数值

more about csv files

more about the csv module

答案 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()会将该行解释为元组。