Python 3.x 计算字符串,得到一个空集,为什么?(python 3)
早上好,我正在尝试计算csv文档中“是”和“否”出现在列中的次数。由于某种原因,我在最终输出中得到了一个空集。格式在最终文档中按指示生成,但计数和集合为空。代码如下:Python 3.x 计算字符串,得到一个空集,为什么?(python 3),python-3.x,string,csv,Python 3.x,String,Csv,早上好,我正在尝试计算csv文档中“是”和“否”出现在列中的次数。由于某种原因,我在最终输出中得到了一个空集。格式在最终文档中按指示生成,但计数和集合为空。代码如下: yes = 0 no = 0 with open('2021FASTSurveyResponses.csv', 'r') as fastout: yayornay = csv.reader(fastout) next(yayornay) for yesno in yayornay: yesn
yes = 0
no = 0
with open('2021FASTSurveyResponses.csv', 'r') as fastout:
yayornay = csv.reader(fastout)
next(yayornay)
for yesno in yayornay:
yesno = yesno[1]
# pattern1 = re.compile(r"no")
# pattern2 = re.compile(r"yes")
# pattern1.split(',')
# pattern2.split(',')
# yesno.split(',')
yesno.strip()
print(yesno)
for line in yesno:
if line == 'yes':
# yes.count('yes')
yes.append()
# yes = yes + 1
# yes += 1
for line in yesno:
if line == 'no':
# no.count('no')
no.append()
# no = no + 1
# no += 1
# datetime = str(datetime.datetime.now())
# with open('yayornay.csv', 'w') as f:
# f.write('Yes(s) = {} /'.format(yes))
# f.write(' No(s) = {} '.format(no))
# f.write(datetime)
我认为解决办法很简单,但有些东西对我来说并不合适。我错过了什么?
提前谢谢如果需要计数,请将是和否初始化为整数(0)而不是数组([]) 替换
no = []
yes = []
与
yes+=1
应导致错误。假设不是,这意味着如果line=='no'和如果line=='yes'
都不是真的。仔细检查行
是什么<代码>打印(列表(行))将帮助显示隐藏字符。并且,不要使用注释掉的+=
,而是使用注释掉的append
行。查看注释掉的关于yes.append()和no.append()的行。我注释掉了“in life=”并取消注释掉了yes/no.append()-但这导致了相同的问题。。。接下来我将测试打印(列表(行)),注意我评论的前半部分。我评论的第二部分是,您曾经修复了第一个IssueEyp,现在看看它。谢谢您从.readlines()
获得的行将以换行符结尾(可能最后一行除外)。因此,它们不可能等于“yes”
或“no”
。您应该对每一行应用.strip()
,以去除换行符和任何其他无关的空白。这可能更接近他们想要的。正如我在一篇评论中提到的,他们应该在他们最初的方法中出现错误,而事实上,它们并不意味着代码永远不会执行,所以在修复之前,这不会改变任何事情。好吧,这太疯狂了:我尝试的任何东西似乎都无法让我计算“是”或“否”的存在。请参阅Jason Harper的评论。打印出“line”并查看为什么它永远不等于yes或no是的,我可以从打开文件并仅从csv中提取我想要的列中看出,每一行都包含为“yes”或“no”以及type=str。我不知道如何填充for循环来遍历这些值。这应该很简单。另外,如果我只运行print(yesno.count('yes')),我会看到1存在该字符串,然后在“yes”不存在时看到0。
no = 0
yes = 0