将一行分成多行,但使用python重复名称

时间:2018-06-27 21:21:16

标签: python python-3.x unix

我有一个输入文件(固定宽度格式)文本文件,如下所示:

id1|col2|col3|...|timestamp1,timestamp2,timestamp3,timestamp4,timestamp5  
id2|col2|col3|...|timestamp1,timestamp2  
id3|col2|col3|...|timestamp1  
...  

ID具有不同数量的时间戳。所需的输出结构应为:每个ID都应有一个时间戳,第二个时间戳应在不同的行上且具有相同的ID。

id1|col2|col3|...|timestamp1  
id1|col2|col3|...|timestamp2  
id1|col2|col3|...|timestamp3  
id1|col2|col3|...|timestamp4    
id1|col2|col3|...|timestamp5    
id2|col2|col3|...|timestamp1  
id2|col2|col3|...|timestamp2  
id3|col2|col3|...|timestamp1  

我试图在sql中阅读它,但这有点乏味。我正在寻找在Python或UNIX中是否有答案。非常感谢。

1 个答案:

答案 0 :(得分:0)

您可以使用split('|')使用|分隔符来剪切行,然后使用split(',')将最终字段剪切为时间戳列表

with open('/path/to/file', 'r') as f:  
    for line in f:
        fields = line.split('|')
        timestamps = fields[-1].split(',')
        for timestamp in timestamps:
            print('|'.join(fields[:-1]+[timestamp]))