【问题标题】:Counting string(s), getting an empty set, why? (python 3)计算字符串,得到一个空集,为什么? (蟒蛇3)
【发布时间】: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


【解决方案1】:

如果需要计数,请将 yes 和 no 初始化为整数 (0) 而不是数组 ([])。

替换

no = []
yes = []

no = 0
yes = 0

【讨论】:

  • 这可能更接近他们想要的。正如我在评论中提到的那样,他们应该在原来的方法中遇到错误,而事实上他们并不意味着代码永远不会执行,所以在修复之前不会改变任何东西。
  • 好吧,这太疯狂了:我尝试的任何方法似乎都无法让我计算“是”或“否”的存在
  • 查看 Jason Harper 的评论。打印出“行”,看看为什么它永远不等于是或否
  • 是的,我可以从打开文件中看到,并且只从我想要的 csv 中提取列,每一行都包含为“是”或“否”和类型=str。我不确定如何填充 for 循环以遍历这些值。应该很简单。
  • 另外,如果我只是运行 print(yesno.count('yes')),我会看到 1 存在该字符串,然后 0 表示 'yes' 不存在。
猜你喜欢
  • 2013-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-03
  • 2015-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多