Python脚本解析文本,根据第一列中的值创建多个文件,并根据匹配进行排序

Python脚本解析文本,根据第一列中的值创建多个文件,并根据匹配进行排序,python,Python,如上所述,我在创建脚本时遇到了一些问题,该脚本将: 读取并解析我的制表符分离文件 创建以第一列中20个唯一值命名的单个txt文件 对具有相同唯一第一列值的所有行进行排序和收集,并将其写入相应的文本文件 到目前为止,我已经能够解析原始文件,并为原始文件中的每个唯一值创建空文件。。但是我被卡住了 file = open("path_to_document", 'rt') Uniquelist = [] i = 0 for line in file: parsedLine = lin

如上所述,我在创建脚本时遇到了一些问题,该脚本将:

  • 读取并解析我的制表符分离文件
  • 创建以第一列中20个唯一值命名的单个txt文件
  • 对具有相同唯一第一列值的所有行进行排序和收集,并将其写入相应的文本文件
  • 到目前为止,我已经能够解析原始文件,并为原始文件中的每个唯一值创建空文件。。但是我被卡住了

    file = open("path_to_document", 'rt')
    
    Uniquelist = []
    
    i = 0
    
    for line in  file:
    
        parsedLine = line.strip().split('\t')
        val = parsedLine[0]
        if val not in Uniquelist:
            Uniquelist.append(val)
        for i in Uniquelist:
            outputfile = open('%s.txt' % i, 'a')
    

    这就是我到目前为止所做的,它是有效的,但它完全缺少了第三部分。我不确定使它工作所需的逻辑或语法

    将值存储在字典的第一列而不是列表中。在文件中的行上循环时,检查该值是否已在字典中(如果dict中的值),如果不在字典中,则创建一个新条目,第一个值作为键,其余值(parsedLine[1:])作为值。如果是,只需将其余值添加到该条目。
    然后,您可以将该dict保存为文本文件(或者,如果可以的话,json将使其更加容易)


    是的,可能还有其他库可以完全满足您的需要,但是对于这么简单的东西,我认为没有必要添加外部依赖项。

    您可以使用
    pandas
    ,如下所示:

    import pandas as pd
    
    
    # read from the `tsv` file:
    df = pd.read_csv('your_file.tsv', sep='\t')
    
    # group-by unique values in the first column:
    gb = df.groupby(0)
    
    # iterate over the unique values in the first column and write the cross-section data to a file with the corresponding name
    for value, df_ in gb:
        df_.to_csv(
            'value_{}.csv'.format(value), 
            index=False
        )
    

    写入文件在许多其他地方都有很好的记录。我怀疑您真正需要的是在NumPy或Pandas中引用
    groupby
    函数。这两个包中的任何一个都比简单的列表更好地处理您的数据集。这足以让你走上正确的道路吗?谢谢你的建议;我会调查的