csv用于列出和分析python

csv用于列出和分析python,python,list,csv,count,Python,List,Csv,Count,我正在从csv文件中读取一些值,并使用以下代码将这些值转换为列表。csv文件只是一行,大约有2000个值,它们要么是“1”,要么是“0”。通过这些代码,我试图计算csv文件中有多少个“1” def countX(a, x): count = 0 for ele in a: if (ele == x): count = count + 1 return count def countX(a, x): return a.cou

我正在从csv文件中读取一些值,并使用以下代码将这些值转换为列表。csv文件只是一行,大约有2000个值,它们要么是“1”,要么是“0”。通过这些代码,我试图计算csv文件中有多少个“1”

def countX(a, x):
    count = 0
    for ele in a:
        if (ele == x):
            count = count + 1
    return count

def countX(a, x):
    return a.count(x)

with open(my_file_name, 'r') as in1file:
    mylist = [row[0] for row in csv.reader(in1file, delimiter=';')]

print (mylist)

a = [mylist]
x = 1

countX 
print(countX(a, x))
我遇到的问题是“我的列表”返回类似于

['0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0'] 
因此,当我询问我的列表以计算“1”的计数时,出于某种原因,我总是得到值0。如果我只是创建一个列表并

a = [1,1,1,1,1,1,0,0] 

我将得到一个计数值6。我如何才能使此工作正常,以便从csv文件中获得计数的1数?

尝试将代码中的
分隔符
命名参数更改为

因此,读取CSV的代码是:

with open(my_file_name, 'r') as in1file:
    mylist = csv.reader(in1file, delimiter=',')

您的列表现在只包含一个字符串。您需要获取字符串并对其执行
拆分(',')
,这将为您提供一个单字符串列表,然后您可以将这些字符串转换为整数,我认为这是您想要的

如果这确实是您的
mylist
,长度为1,那么我的想法如下:

>>> mylist = ['0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0'] 
>>> mylist[0]
'0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0'
>>> [int(item) for item in mylist[0].split(',')]
[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
如果
mylist
中有很多类似的字符串,您可以执行以下操作:

lines = []
for line in mylist:
    lines.append([int(item) for item in line.split(',')])

下面是一个适用于您的案例的快速片段:

MyList = ['0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0']
MyList_Split = MyList[0].split(',')
print(MyList_Split.count('1'))
# Returns 2

正确缩进您的代码道歉,我刚刚修改了它。您的变量名选择非常糟糕,使代码难以读取。此外,FYR,还有一个函数
list.count(x)
,它在列表中计算
x
。没有必要重新实现它。如何实现list.count(x)?当我尝试更改分隔符时,我的列表只会像这样返回['0']?我仍然得到一个值“0”,这为我治愈了它,谢谢你的帮助:-)
def countX(a, x):
count = 0
for ele in a:
    if (ele == x):
        count = count + 1
return count

def countX(a, x):
return a.count(x)

with open(my_file_name, 'r') as in1file:
mylist = [row[0] for row in csv.reader(in1file, delimiter=';')]

new_list = [int(item) for item in mylist[0].split(',')]

a = [new_list]
x = 1

countX 
print(countX(a, x))
>>> from collections import Counter
>>> MyList = ['0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0']
>>> counts = Counter(MyList[0].split(','))
>>> counts
Counter({'0': 18, '1': 2})
>>> counts['1']
2