Python脚本解析文本,根据第一列中的值创建多个文件,并根据匹配进行排序
如上所述,我在创建脚本时遇到了一些问题,该脚本将:Python脚本解析文本,根据第一列中的值创建多个文件,并根据匹配进行排序,python,Python,如上所述,我在创建脚本时遇到了一些问题,该脚本将: 读取并解析我的制表符分离文件 创建以第一列中20个唯一值命名的单个txt文件 对具有相同唯一第一列值的所有行进行排序和收集,并将其写入相应的文本文件 到目前为止,我已经能够解析原始文件,并为原始文件中的每个唯一值创建空文件。。但是我被卡住了 file = open("path_to_document", 'rt') Uniquelist = [] i = 0 for line in file: parsedLine = lin
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
函数。这两个包中的任何一个都比简单的列表更好地处理您的数据集。这足以让你走上正确的道路吗?谢谢你的建议;我会调查的