首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >组成tsv文件

组成tsv文件
EN

Stack Overflow用户
提问于 2014-04-02 15:54:06
回答 3查看 1.3K关注 0票数 0

我试图计算一个tsv文件中路径的平均长度。路径中的项目用";“分隔。The文件看起来像这样。

格式: hashedIpAddress durationInSec评级

代码语言:javascript
复制
  6a3701d319fc3754  1297740409  166 14th_century;15th_century;16th_century;Pacific_Ocean;Atlantic_Ocean;Accra;Africa;Atlantic_slave_trade;African_slave_trade   NULL
  3824310e536af032  1344753412  88  14th_century;Europe;Africa;Atlantic_slave_trade;African_slave_trade 3
  415612e93584d30e  1349298640  138 14th_century;Niger;Nigeria;British_Empire;Slavery;Africa;Atlantic_slave_trade;African_slave_trade   NULL

我的密码是:

代码语言:javascript
复制
 import csv
 count=0
 with open('paths_finished.tsv', 'rb') as tsvfile:
     a = csv.reader(tsvfile,dialect='excel-tab')
     for row in a:
     # if row[3:4] == ';':
       # count++
         print row[1:4]

如何计算文件中的“;”号?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-04-02 15:55:31

使用索引,而不是切片,可以获得一个单独的列:

代码语言:javascript
复制
for row in a:
    article_count = len(row[3].split(';'))

';'上拆分特定的列文本会给出一个元素列表;len()告诉您有多少个元素。

或者,计算;字符,添加一个:

代码语言:javascript
复制
for row in a:
    article_count = row[3].count(';') + 1

但是,也许您也想对路径元素本身做些什么。

要获得所有路径的平均长度,我只需使用.count()

代码语言:javascript
复制
total = 0
count = 0

for row in a:
    total += row[3].count(';') + 1
    count += 1

average = total / float(count)

在这种情况下,您甚至不需要使用csv模块;您根本不需要将行拆分成行,其他列中没有;分号,所以更简单的解决方案是只遍历文件的行:

代码语言:javascript
复制
with open('paths_finished.tsv', 'rb') as tsvfile:
    total = 0
    count = 0

    for line in tsvfile:
        total += line.count(';') + 1
        count += 1

    average = total / float(count)
票数 2
EN

Stack Overflow用户

发布于 2014-04-02 15:55:22

您可以使用split方法:

代码语言:javascript
复制
paths = row[3].split(";")
print len(paths) - 1

这将计算行中的;字符数。如果要计算被-1拆分的元素,请删除;部件

票数 1
EN

Stack Overflow用户

发布于 2014-04-02 15:57:08

我只使用;作为分隔符,如果您的唯一目标是计数分号,则使用len(row) - 1

代码语言:javascript
复制
with open('paths_finished.tsv', 'rb') as tsvfile:
     a = csv.reader(tsvfile,dialect='excel-tab',delimiter=';')
     for row in a:
         print len(row)-1 # subtract 1 for counting ';'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22816833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档