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

Python 计算文本文件中用逗号分隔的总数,python,file,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)) pri

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

请提供建议和帮助。谢谢。

如果要用逗号分隔,则需要将该分隔符指定为
分隔

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

如果要按逗号拆分,则需要将该分隔符指定为
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)

您可以根据从文件中读取的字符串创建一个整数列表,如下所示:

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

您可以根据从文件中读取的字符串创建一个整数列表,如下所示:

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

这是更改后的代码,如您所见,我们需要使用逗号进行拆分,以便它正常工作

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

您可以在

上了解有关拆分的更多信息。这是更改后的代码,您可以看到我们需要使用逗号拆分,以便它正常工作

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

您可以在

上了解有关拆分的更多信息,只需添加一个解决方案即可

您可以使用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]
索引用于获取文件中的第一行 我用a来得到整数形式的值


只是为了添加解决方案

您可以使用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]
索引用于获取文件中的第一行 我用a来得到整数形式的值

,考虑如下:

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))
只要文件包含逗号分隔的数字(也适用于浮点数、混合浮点数和整数),此选项就可以使用。如果一行上有一个数字,它必须有一个尾随<代码>,<代码>所以<代码>文字>()>代码>将把该行解释为一个元组。
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\u eval()
将把该行解释为一个元组。

@Joehan如果有效,您可以将答案标记为已接受。干杯编辑:啊,我看到你标记了另一个答案。没问题。@Joehan如果有效,你可以将答案标记为接受。干杯编辑:啊,我看到你标记了另一个答案。没问题。这是可行的,但是,最后3行是冗余的
literal\u eval()
已经返回一个整数元组,因此不需要使用
int()
进行转换。您可以使用
list.extend()
从文件的每一行累加整数。这是可行的,但是,最后3行是多余的
literal\u eval()
已经返回一个整数元组,因此不需要使用
int()
进行转换。您可以使用
list.extend()
从文件的每一行累加整数。