小编von*_*ses的帖子

'_csv.writer'对象没有属性'write'

我不确定这是什么问题。我有一个要过滤的csv文件。我想删除所有以“ @”开头的行以及所有第三列为字符串“ chrM”的行。我基本上将我的代码设置为像这里的答案:

TypeError:预期的字符缓冲区对象

但我收到一个错误。

import re
import csv

inputSamFile = 'excerpt'
outSamFile = 'filternoM'

with open(inputSamFile) as inputSam, open(outSamFile, 'wt') as outSam:
    inputSamCont = csv.reader(inputSam, delimiter = '\t')
    outSamCont = csv.writer(outSam, delimiter = '\t')
    for line in inputSamCont:
        if line[0].startswith('@'):
            continue
        elif line[2] == 'chrM':
            continue
        else:
            outSamCont.write(line)
Run Code Online (Sandbox Code Playgroud)

追溯(最近一次通话最近):outSamCont.write(ProcessLine(line))中文件“ filterMito.py”,第19行,AttributeError:'_csv.writer'对象没有属性'write'

我究竟做错了什么

python csv

5
推荐指数
1
解决办法
2万
查看次数

更新字典中的嵌套计数器

我正在逐行浏览一个大型 CSV 文件。我想要做的是计算特定列中字符串的出现次数。我遇到麻烦的是,我希望将计数器嵌套在字典中,其中外部字典的键是另一列的值。我需要这样做,否则数据将被错误处理,因为存在重复项。

想象一下我的 CSV:

outerDictKey    CounterKey
apple     purple
apple     blue
pear    purple
Run Code Online (Sandbox Code Playgroud)

所以基本上我想要:

dictionary = { apple:
                    counter({blue: 1
                     purple: 1})
                pear:
                   counter({purple: 1})
             }
Run Code Online (Sandbox Code Playgroud)

我不知道该怎么做。

myCounter = Counter()
myKey = 'barbara'
counterKey = 'streisand'
largeDict = defaultdict(dict)       
largeDict[myKey] = {myCounter[counterKey] += 1}
Run Code Online (Sandbox Code Playgroud)

直观上这看起来不起作用,当然它会给出语法错误。

我也尝试过

largeDict[myKey][myCounter][counterKey]+=1
Run Code Online (Sandbox Code Playgroud)

这会引发“TypeError: unhashable type: 'Counter'”错误。

最后

>>> largeDict[myKey]=Counter()
>>> largeDict[myKey][myCounter][counterKey]+=1
Run Code Online (Sandbox Code Playgroud)

这仍然给出类型错误。那么如何增加嵌套在字典中的计数器呢?

python counter dictionary

2
推荐指数
1
解决办法
3384
查看次数

标签 统计

python ×2

counter ×1

csv ×1

dictionary ×1