Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将一行拆分为多行,但使用python重复名称_Python_Python 3.x_Unix - Fatal编程技术网

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

将一行拆分为多行,但使用python重复名称,python,python-3.x,unix,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|

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

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中是否有答案。非常感谢。

您可以使用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]))

在要求他人为您编写代码之前,请在发布问题之前向我们展示您的尝试。在没有任何代码的情况下问这样的问题看起来像是家庭作业,这不是stackoverflow的目的。我对Unix或Python不熟悉。我尝试使用sql的子字符串函数。但我无法获得所需的输出。我搜索了一些类似的代码,但需要修改,因为我的文件不同:对于打开的行(“h2.txt”):line=line.strip().split(“,”)对于第[1:]:if”,“in item:item=item.split(“,”)行中的项,否则:item=item.split()对于项目中的i:print“%s |%s”%(第[0]行),i)@AdamSmith也许我应该重新表述我的第二句话。我想说的是,在没有表现出自己解决问题的任何努力的情况下提出问题不是你应该在stackoverflow上做的。当我看到这样一个问题时,在我看来,用户甚至没有研究这个问题,并期望在这里发布它将神奇地解决所有问题(我不是在谈论当前的问题,我是在谈论一般问题)。@Dvorog注意到并同意。我认为所谓的“家庭作业”辩论是分散注意力的,因为所有的问题都应该按照相同的标准来处理。谢谢你,格里尼奥。这是有效的:在f:line=line.strip()fields=line.split(“|”)timestamps=fields[-1]中,open('h6.txt','r')作为f:for line,在f:line=line.strip()fields=line.split('.')timestamps=fields[-1]+[timestamp])中,在timestamps:print('.'.'.')中为timestamps拆分(',')。jo