Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在混合数据列表中求和_Python_Arrays_List_Append - Fatal编程技术网

Python 在混合数据列表中求和

Python 在混合数据列表中求和,python,arrays,list,append,Python,Arrays,List,Append,这是一个具体的问题,将帮助我完成一个即将离任的项目。这很简单,我对Python非常陌生,我的背景主要是艺术。我喜欢,但我也觉得很有挑战性 我有一个文本文件(Data.txt),其中包含数字/名称列表,如下所示(简短示例): 这是一份好坏参半的名单。在每个字符串后面…后面跟着12个数字,依此类推。请注意,这些数字是“float” 我设计了这个: numberList = [] data = [] data = open("SalesData.txt").read().split() for i i

这是一个具体的问题,将帮助我完成一个即将离任的项目。这很简单,我对Python非常陌生,我的背景主要是艺术。我喜欢,但我也觉得很有挑战性

我有一个文本文件(Data.txt),其中包含数字/名称列表,如下所示(简短示例):

这是一份好坏参半的名单。在每个字符串后面…后面跟着12个数字,依此类推。请注意,这些数字是“float”

我设计了这个:

numberList = []
data = []
data = open("SalesData.txt").read().split()
for i in data:
        numberList.append(i)
print numberList
这将附加并打印external.txt列表中的所有数据。如何在新列表(numberList)中获取所有数据,但不包括通过读取文件找到的所有“字符串”。这样,我就可以只对这些数字进行求和--

尝试以下方法:

tsum = []
for j in numberList:
    try: tsum.append(float(j))
    except: pass
sum = sum(tsum)
试试这个:

tsum = []
for j in numberList:
    try: tsum.append(float(j))
    except: pass
sum = sum(tsum)

只需在这些行上迭代,只需将数字添加到列表中

with open("somefile.txt") as f:
     my_list = []
     for line in f:
         try:
            my_list.append(float(line))
         except ValueError:
             pass

print sum(my_list)

只需在这些行上迭代,只需将数字添加到列表中

with open("somefile.txt") as f:
     my_list = []
     for line in f:
         try:
            my_list.append(float(line))
         except ValueError:
             pass

print sum(my_list)

您可以执行类型检查,或者如果数字实际上是字符串中的数字,您可以执行类似于
“13”.isdigit()
检查的操作,但我可能想做一些更聪明的操作:

numberList = []

for i in range(0, len(data)/13):
    numberList.append(data[1*(i+1):13*(i+1)])

应该以字符串后面的数字组为目标。这确实取决于您的输入数据不是垃圾数据,但它在大型数据集上的工作速度应该比执行
.isdigit()
或其他类型检查更快。

您可以执行类型检查,或者如果数字实际上是字符串中的数字,则可以执行类似于
“13”.isdigit()的操作
检查,但我可能想做一些更聪明的事情:

numberList = []

for i in range(0, len(data)/13):
    numberList.append(data[1*(i+1):13*(i+1)])

应该以字符串后面的数字组为目标。这确实取决于您的输入数据是否是垃圾数据,但它在大型数据集上的运行速度应该比执行
.isdigit()
或其他类型检查更快。

首先,您不应该在文件上执行
.read().split()
,这将在任何空格上拆分,而不仅仅是在换行符上拆分。幸运的是,Python可以直接在文件上迭代

然后,您可以尝试将每一行转换为一个浮点数,并仅在可行的情况下将其附加到列表中(否则跳过)。此外,您还可以立即将其转换为浮动-使求和更容易

number_list = []
with open("SalesData.txt") as myfile:
    for line in myfile:
        try:
            number_list.append(float(line))
        except ValueError:
            pass
print(sum(number_list))

首先,您不应该在文件上执行
.read().split()
,这将在任何空格上分割,而不仅仅是在换行符上。幸运的是,Python可以直接在文件上迭代

然后,您可以尝试将每一行转换为一个浮点数,并仅在可行的情况下将其附加到列表中(否则跳过)。此外,您还可以立即将其转换为浮动-使求和更容易

number_list = []
with open("SalesData.txt") as myfile:
    for line in myfile:
        try:
            number_list.append(float(line))
        except ValueError:
            pass
print(sum(number_list))

如果您的数据是结构化的(似乎是这样),我只需要使用一个计数器并删除len12的每个序列的第一个元素

下面是一个例子:

numberList = []
data = []
counter = 0
with open("SalesData.txt") as myfile:
    for line in myfile:
        if counter > 0:
            number_list.append(float(line))
        counter = (counter + 1) % 12
print numberList

如果您的数据是结构化的(似乎是这样),我只需要使用一个计数器并删除len12的每个序列的第一个元素

下面是一个例子:

numberList = []
data = []
counter = 0
with open("SalesData.txt") as myfile:
    for line in myfile:
        if counter > 0:
            number_list.append(float(line))
        counter = (counter + 1) % 12
print numberList
但是如果有一些字母没有ASCII码,那么它就不起作用了


但是,如果有没有ASCII码的字母,它就不起作用了。

是的,两个人在同一时间有着相同(正确)的想法。顺便说一句,不需要去掉空白。实际上,在标签是数字的特殊情况下,这可能是错误的。不确定是否有可能发生这种情况OP@lcfseth:如果标签是数字的,你怎么知道它们是标签而不是值?他说这个文件有一个预先定义的模式:1个标签-12个数字,1个标签-12个数字…耶,两个人在同一时间有相同的(正确的)想法。顺便说一句,不需要去掉空白。实际上,在标签是数字的特殊情况下,这可能是错误的。不确定是否有可能发生这种情况OP@lcfseth:如果标签是数字的,你怎么知道它们是标签而不是值?他说文件有一个预先定义的模式:1个标签-12个数字,1个标签-12个数字…我可能错了,但在所有情况下,j最有可能是str或unicode,因为不涉及解析。我可能错了,但在所有情况下,j最有可能是str或unicode,因为不涉及解析。这太棒了!但是我认为第一行有冲突::它是一个字符串,所以它提示我一个错误。有办法绕过它吗?也许将计数器初始化为1,那么它从第2行开始?让我知道任何建议。如果你能正确地指导我,这是我最喜欢的方法!!是的,我将使用您的解决方案中提供的迭代。我们应该一起得到正确的答案:)现在应该可以正常工作了。@mmmaceo:计数器初始化是正确的。正如Tim Pietzcker所指出的,split函数将向集合中添加空值。这就是导致异常的原因。这太棒了!但是我认为第一行有冲突::它是一个字符串,所以它提示我一个错误。有办法绕过它吗?也许将计数器初始化为1,那么它从第2行开始?让我知道任何建议。如果你能正确地指导我,这是我最喜欢的方法!!是的,我将使用您的解决方案中提供的迭代。我们应该一起得到正确的答案:)现在应该可以正常工作了。@mmmaceo:计数器初始化是正确的。正如Tim Pietzcker所指出的,split函数将向集合中添加空值。这就是导致异常的原因。.isdigit()可能是完美的,但我认为它不适用于浮点数。.isdigit()可能是完美的,但我认为它不适用于浮点数?@mmmaceo问题只是一个众所周知的问题,即确定字符串是否可以在浮点数中转换,再加上在文本中重复行的必要性。关于“浮动”字符串的问题,在stackoverflow@mmmaceo这个问题只是一个众所周知的问题,即确定字符串是否可以在浮点中转换,以及是否需要在文本中的行上进行迭代。关于“浮动”一个字符串的问题,有一些关于