我需要帮助解析一个很长的文本文件,它看起来像:
NAME IMP4
DESCRIPTION small nucleolar ribonucleoprotein
CLASS Genetic Information Processing
Translation
Ribosome biogenesis in eukaryotes
DBLINKS NCBI-GI: 15529982
NCBI-GeneID: 92856
OMIM: 612981
///
NAME COMMD9
DESCRIPTION COMM domain containing 9
ORGANISM H.sapiens
DBLINKS NCBI-GI: 156416007
NCBI-GeneID: 29099
OMIM: 612299
///
.....
我想获得一个结构化的csv文件,每行有相同的列数,以便轻松提取我需要的信息。在
首先我试着这样做:
^{pr2}$获得如下csv:
NAME IMP4\tDESCRIPTION small nucleolar ribonucleoprotein\tCLASS Genetic Information Processing\t Translation\t Ribosome biogenesis in eukaryotes\tDBLINKS NCBI-GI: 15529982\t NCBI-GeneID: 92856\t
OMIM: 612981
NAME COMMD9\tDESCRIPTION COMM domain containing 9\tORGANISM H.sapiens\tDBLINKS NCBI-GI: 156416007\t NCBI-GeneID: 29099t\ OMIM: 612299
主要的问题是,像DBLINKS这样的字段在原始文件中是在多行中的,这样会导致将多个字段拆分为多个字段,而我需要将它们全部放在一个字段中。 此外,并不是所有的字段都出现在每一行中,例如示例中的字段“CLASS”和“organic”。在
我要获取的文件应该如下所示:
NAME IMP4\tDESCRIPTION small nucleolar ribonucleoprotein\tNA\tCLASS Genetic Information Processing; Translation; Ribosome biogenesis in eukaryotes\tDBLINKS NCBI-GI: 15529982; NCBI-GeneID: 92856; OMIM: 612981
NAME COMMD9\tDESCRIPTION COMM domain containing 9\tORGANISM H.sapiens\tNA\tDBLINKS NCBI-GI: 156416007; NCBI-GeneID: 29099; OMIM: 612299
你能帮帮我吗?在
此脚本将您的文本文件转换为有效的CSV文件(例如,可以用Excel读取):
您可以使用itertools.groupby,一次将行收集到记录中,第二次将多行字段收集到迭代器中:
收益率
^{pr2}$上面是你看到的输出。它与您发布的期望输出相匹配,假设您正在显示该输出的
repr
。在参考使用的工具:
相关问题 更多 >
编程相关推荐