【问题标题】:Writing to a specific cell in csv using python使用python写入csv中的特定单元格
【发布时间】:2013-10-20 07:50:10
【问题描述】:

我在一个文本文件中有一组句子,并且我将其中的动词标记为 csv 文件中的列标题。如果动词出现在那个句子中,我需要在右列下的特定单元格中标记一个“1”。 例如

如果我的句子是:我喜欢这部电影。

我的 csv 文件有标题:喜欢、讨厌和厌恶。

然后我需要我的 csv 文件看起来像

  like       hate       loathe
   1

提前致谢。

这是我尝试过的代码:

with open('verb.csv', 'wb') as csvn:
    cwriter = csv.writer(csvn)
    cwriter.writerow([d for d in verbs])

verbs 是我的动词列表。这会将动词打印为 csv 文件中的列标题。

for l, label in file:
    t = nltk.word_tokenize(l)
    tt = nltk.pos_tag(t)
    for pos in tt:
        for p in pos[1]:
            c = 0
            if(p == 'V'):
                w = pos[0]
                for l in verbs:
                    if w == l:
                        print(c)
                        continue
                    else:
                        c+=1

现在 w 包含动词,我可以在动词列表中搜索匹配的单词并获取它的位置,但我不知道如何将 csv 文件中的相应位置标记为 1。我的 python版本是 2.7。

【问题讨论】:

  • 你应该尝试一下然后问,这个问题也需要你的python版本。对于 goos 的起点,请参考 python docs 和这个 post 有一个很好的例子
  • 对不起,我会编辑我的帖子。

标签: python csv cell


【解决方案1】:

我会在您创建计数器后创建一个空列表。该列表与您的 n 个动词长度相同。

c = 0
emptylist = [""] * len(verbs)

然后,当您遍历动词列表时,使用计数器 (c)(顺便说一句,您确定要在代码中编写的不是 print(l) 吗?)作为空列表中的位置。我会更改以下部分:

if w == l:
    print(c)
    emptylist[c] = 1
    ## then write emptylist to the csv with csv.writerow(emtptylist)
    continue

【讨论】:

    【解决方案2】:

    我建议您在处理代码时采用增量步骤。让某些部分工作,然后构建其余部分。例如,从我们在这里可以看到,当您尝试读取 file 时,您的第一行应该有一个 Value 错误,除非它已经被 csv 或其他东西解析过。

    您还应该在实际写入任何内容之前生成所有要放入结果文件的输出。建立一个字典,我相信会起作用,结果,然后最后以你想要的格式写出来。您不能真正返回并将字符任意写入文件的某些列。您可以追加,但最好只构建输出并在最后执行。

    不清楚你是想要每个句子一行,还是一个总行,还是什么?如果没有单词,则为空行,或者每列为零?

    您的目标是熟悉nltk,还是只是获得所需的输出?

    似乎只测试一个单词是否为in 一个列表会更有效。 (if w in verbs 将比嵌套循环更有效。)

    您还在循环中更改l 的值。使用不同的名称。

    当您写出标题时,您不需要分解列表并使用列表理解再次组装它。如果动词已经是一个列表,cwriter.writerow(verbs) 应该没问题。

    这里有太多问题无法在一个答案中解决,所以我会重申:小步骤。在尝试写出整个代码块之前,让事情一次运行一个功能......使用大量print 语句来查看正在加载的值。

    祝你好运!

    【讨论】:

    • 我需要为每个句子添加一个新行,并且可以使用 0 或空格。我需要以这种格式获取此输出,以便可以将其用于进一步处理。实际上,我对 python 比较陌生。但我一定会听从你的建议,采取一些小步骤,谢谢你。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-18
    • 1970-01-01
    相关资源
    最近更新 更多