首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用于解析文本、根据第一列中的值创建多个文件以及基于匹配进行排序的Python脚本

用于解析文本、根据第一列中的值创建多个文件以及基于匹配进行排序的Python脚本
EN

Stack Overflow用户
提问于 2018-08-22 05:13:50
回答 2查看 59关注 0票数 0

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

  1. 读取并解析我的制表符分隔文件
  2. 创建以第一列中的20个左右的唯一值命名的单独txt文件
  3. 排序并收集具有相同的唯一第一列值的所有行,并将这些行写入相应的文本文件。

到目前为止,我已经能够解析原始文件,并为原始文件中的每个唯一值创建空文件。但之后我就卡住了。

代码语言:javascript
复制
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')

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

EN

回答 2

Stack Overflow用户

发布于 2018-08-22 05:29:34

将第一列中的值存储在字典中,而不是列表中。循环遍历文件中的各行时,检查该值是否已在字典中(如果字典中的值已存在),如果没有,则创建一个新条目,将第一个值作为关键字,其余的值(parsedLine1:)作为值。如果是,只需将其余的值添加到该条目。

然后,您可以将该字典保存为文本文件(或者,如果可以,json将使其更容易)。

是的,可能还有其他库可以做你想做的事情,但是对于这么简单的事情,我不认为有必要添加外部依赖项。

票数 0
EN

Stack Overflow用户

发布于 2018-08-22 05:51:37

您可以按如下方式使用pandas

代码语言:javascript
复制
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
    )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51956788

复制
相关文章

相似问题

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