【发布时间】:2021-05-03 14:19:46
【问题描述】:
早上好,我正在尝试计算“是”和“否”出现在 csv 文档的列中的次数。出于某种原因,我在最终输出中得到了一个空集。格式按照指示在最终文档中生成,但计数和集合为空。这是代码:
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)
我认为解决方案很简单,但是这里有些东西对我来说没有联系。我错过了什么? 提前谢谢你
【问题讨论】:
-
yes += 1应该会导致错误。假设不是,这意味着if line == 'no'和if line == 'yes'永远不会是真的。仔细检查line是什么。print(list(line))将帮助显示隐藏的字符。并且,不要使用+=,而是使用您已注释掉的append行。 -
查看关于 yes.append() 和 no.append() 的注释行。我注释掉了 'in life =' 并取消注释了 yes/no.append() - 但这会导致同样的问题......接下来我将测试 print(list(line))
-
是的,请注意我评论的前半部分。我评论的第二部分是一旦你解决了第一个问题
-
是的,现在正在看。谢谢
-
从
.readlines()得到的行将以换行符结尾(可能最后一行除外)。因此它们不可能等于"yes"或"no"。您应该将.strip()应用于每一行,以消除换行符和任何其他无关的空格。
标签: python-3.x string csv