Python 计算文本文件中用逗号分隔的总数
我在txt文件中有这些数据: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
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()
从文件的每一行累加整数。