在Python中每个指定分隔符之间插入下一行



假设列数为3,并且数据的头部是正确的,列分隔符为"<|>",不匹配的行是由于意外换行造成的。

考虑以下CSV文件

PERSON_ID<|>DEPT_ID<|>DATE_JOINED
AAAAA<|>S1<|>2021/01
/03
BBBBBB<|>S2<|>2021/02/03
CCCCC<|>S1<|>2021/03/05

我希望输出如下,

输入图片描述

我做的第一件事是删除CSV文件中的空白。

import re
your_string ="""PERSON_ID<|>DEPT_ID<|>DATE_JOINED
AAAAA<|>S1<|>2021/01
/03
BBBBBB<|>S2<|>2021/02/03
CCCCC<|>S1<|>2021/03/05"""
print(re.sub(r's{1,}','',your_string.strip()))
在这一步之后,我得到了类似磁带的字符串:
PERSON_ID<|>DEPT_ID<|>DATE_JOINEDAAAAA<|>S1<|>2021/01/03BBBBBB<|>S2<|>2021/02/03CCCCC<|>S1<|>2021/03/05

现在我需要在"2021/01/03BBBBBB"中输入正确的下一行。假设列的总数是3,那么我们需要在每一列之间插入下一行:第二个分隔符到第三个分隔符,第四个分隔符到第五个分隔符,第6到第7分隔符…等等。

假设日期在字符串中显示为固定长度10,那么我需要在字符串长度为10后的每个指定分隔符中添加新的行间距。

假设数据头不会改变,那么我可以在从文件开始的字符串长度33之后插入一个新的行间距。

最后,我可以得到正确的行数据,CSV中的行输出是这样的,

PERSON_ID<|>DEPT_ID<|>DATE_JOINED
AAAAA<|>S1<|>2021/01/03 
BBBBBB<|>S2<|>2021/02/03 
CCCCC<|>S1<|>2021/03/05

之后,我可以用字符串分隔符分隔它们。因此,完成不匹配行的恢复。

因此,我需要帮助如何在指定的分隔符之间插入下一行,从其开始的字符串长度为10 ?

谢谢!

直接获取字段行怎么样?像这样:

sep = '<|>'
your_data = [line.strip().split(sep) for line in your_string.strip().split('n') if sep in line]

你有:

[['PERSON_ID', 'DEPT_ID', 'DATE_JOINED'], ['AAAAA', 'S1', '2021/01'], ['BBBBBB', 'S2', '2021/02/03'], ['CCCCC', 'S1', '2021/03/05']]

相关内容

  • 没有找到相关文章

最新更新