如何统计含逗号嵌套分隔的TSV文件中各单元格的元素数量
TSV文件逗号分隔单元格元素数量统计解决方案
现有代码问题说明
你的代码存在两个核心问题:
- 每行所有单元格统计完成后没有输出换行符,导致所有行的统计结果拼接在同一行,丢失了原有的行结构
- 第一列的分组名不需要统计元素数量,直接原样输出即可,原代码对所有字段都做了逗号拆分统计,不符合预期输出要求
修正后的纯Python实现
def main(): name_of_table_file = 'file name here' # 若文件有特定编码可修改encoding参数,比如gbk with open(name_of_table_file, 'rt', encoding='utf-8') as f: for line in f: line = line.rstrip('\n') # 按制表符拆分一级字段 fields = line.split('\t') # 第一个字段是组名,直接加入输出列表 output_cols = [fields[0]] # 遍历剩余单元格统计元素数量 for cell in fields[1:]: output_cols.append(str(len(cell.split(',')))) # 拼接整行输出,分隔符用空格,如需制表符可改为'\t' print(' '.join(output_cols)) if __name__ == "__main__": main()
Pandas实现(适合大数据量场景)
import pandas as pd # 读取TSV文件,无表头,全部按字符串读取避免格式问题 df = pd.read_csv('file name here', sep='\t', header=None, dtype=str) # 第一列保留为分组名 res = df.iloc[:, [0]].copy() # 对剩余所有列统计逗号分隔的元素数量:n个逗号对应n+1个元素 for col in df.columns[1:]: res[col] = df[col].str.count(',') + 1 # 输出结果,分隔符用空格,不输出索引和表头 res.to_csv('output.txt', sep=' ', index=False, header=False)
内容的提问来源于stack exchange,提问作者OnBorrowedLime
相关产品推荐
相关产品推荐

