You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python3统计TSV文件中每行字符串的所有双字符组合(AA-ZZ)出现次数

Python3 实现TSV文件每行双字符组合统计

没问题,我来给你一段实用的代码,专门处理你的需求——统计TSV文件每行长字符串里从AA到ZZ所有双字符组合的出现次数。

代码实现

import string
import csv
from collections import defaultdict

# 生成所有AA到ZZ的双大写字母组合
all_pairs = [a + b for a in string.ascii_uppercase for b in string.ascii_uppercase]

def count_single_string_pairs(input_str):
    """统计单个字符串中所有双字符组合的出现次数"""
    pair_counts = defaultdict(int)
    # 遍历字符串的连续两个字符
    for i in range(len(input_str) - 1):
        current_pair = input_str[i] + input_str[i+1]
        pair_counts[current_pair] += 1
    # 补全所有可能的组合,没出现的设为0
    return {pair: pair_counts.get(pair, 0) for pair in all_pairs}

def process_tsv_file(input_tsv_path, output_tsv_path=None):
    """处理TSV文件,返回每行的统计结果,可选写入输出文件"""
    results = []
    with open(input_tsv_path, 'r', encoding='utf-8') as tsv_file:
        # 用csv模块读取TSV,自动处理制表符分隔
        tsv_reader = csv.reader(tsv_file, delimiter='\t')
        for row in tsv_reader:
            # 跳过空行,取每行的第一个字段(假设每行只有一个长字符串)
            if not row:
                continue
            target_str = row[0].strip()
            # 统计当前行的双字符组合
            row_counts = count_single_string_pairs(target_str)
            results.append(row_counts)
    
    # 如果指定了输出路径,把结果写入新的TSV文件
    if output_tsv_path:
        with open(output_tsv_path, 'w', encoding='utf-8', newline='') as output_file:
            # 用DictWriter写入,表头是所有双字符组合
            tsv_writer = csv.DictWriter(output_file, fieldnames=all_pairs, delimiter='\t')
            tsv_writer.writeheader()
            tsv_writer.writerows(results)
    
    return results

# 示例使用
if __name__ == "__main__":
    # 替换成你的输入TSV文件路径
    input_file = "your_data.tsv"
    # 可选:替换成你想要保存结果的路径
    output_file = "pair_counts_result.tsv"
    
    process_tsv_file(input_file, output_file)
    print("统计完成!结果已保存到指定文件(如果设置了输出路径)")

代码说明

  • 生成所有双字符组合:用string.ascii_uppercase获取所有大写字母,通过双重列表推导式生成AA到ZZ的全部676个组合,确保不会遗漏任何可能的配对。
  • 单字符串统计:用defaultdict高效统计字符串中实际出现的双字符,最后补全所有预设组合的计数(没出现的设为0),完全符合你要求的输出格式。
  • TSV文件处理:使用Python内置的csv模块读取和写入TSV,避免手动处理制表符、换行符带来的错误,同时自动跳过空行,增强鲁棒性。
  • 输出灵活:既可以返回统计结果的列表,也可以将结果写入新的TSV文件,方便后续分析。

比如你给出的示例字符串AEAETLQAKIN,这段代码会正确统计出AE:2、AK:1、EA:1,其他未出现的组合计数为0,完全符合你的需求。

内容的提问来源于stack exchange,提问作者michel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 16:27:45