使用python或python将多行读取为单行

使用python或python将多行读取为单行,python,python-3.x,pandas,Python,Python 3.x,Pandas,我有这样的数据: MP|3561042|||WQTI544|BEA148|16077: POWER ID|7817|I|103306|||D|1 MP|3561042|||WQTI544|BEA148|16011: BINGHAM ID|45607|I|103306|||D|1 MP|3561042|||WQTI544|BEA148|16005: BANNOCK ID|82839|I|103306|||D|1 MP|3561250|||WQTI576 |BEA13

我有这样的数据:

MP|3561042|||WQTI544|BEA148|16077: POWER     ID|7817|I|103306|||D|1
MP|3561042|||WQTI544|BEA148|16011: BINGHAM   ID|45607|I|103306|||D|1
MP|3561042|||WQTI544|BEA148|16005: BANNOCK   ID|82839|I|103306|||D|1
MP|3561250|||WQTI576        
|BEA135|48301: LOVING    TX|82|I|103308|||D|1
MP|3561250|||WQTI576        
|BEA135|48443: TERRELL   TX|984|I|103308|||D|1
MP|3561250|||WQTI576        
|BEA135|48173: GLASSCOCK     TX|1226|I|103308|||D|1
我如何做到这一点:

MP|3561042|||WQTI544|BEA148|16077: POWER     ID|7817|I|103306|||D|1
MP|3561042|||WQTI544|BEA148|16011: BINGHAM   ID|45607|I|103306|||D|1
MP|3561042|||WQTI544|BEA148|16005: BANNOCK   ID|82839|I|103306|||D|1
MP|3561250|||WQTI575|BEA135|48301: LOVING    TX|82|I|103308|||D|1
MP|3561250|||WQTI576|BEA135|48443: TERRELL   TX|984|I|103308|||D|1
MP|3561250|||WQTI576|BEA135|48173: GLASSCOCK TX|1226|I|103308|||D|1
我试过这个:

f=open('C:/Users/user/Desktop/a.csv','r')
lines=f.readlines()
mystr = '|'.join([line.strip() for line in lines])
print(mystr)
MP|3561042|||WQTI544|BEA148|16077: POWER, 
ID|7817|I|103306|||D|1|MP|3561042|||WQTI544|BEA148|16011: BINGHAM, 
ID|45607|I|103306|||D|1|MP|3561042|||WQTI544|BEA148|16005: BANNOCK, 
ID|82839|I|103306|||D|1|MP|3561250|||WQTI576|||BEA135|48301: LOVING, 
TX|82|I|103308|||D|1|MP|3561250|||WQTI576|||BEA135|48443: TERRELL, 
TX|984|I|103308|||D|1|MP|3561250|||WQTI576|||BEA135|48173: GLASSCOCK, 
TX|1226|I|103308|||D|1|MP|3561250|||WQTI576|
我没有达到我想要的方式,有什么帮助吗?第一列始终有一个MP数据,每行有13个管道作为分隔符

编辑:

下面我试着用“MP”而不是“D | 1”来做同样的事情,但没有给出正确的结果,因为有些行没有“D | 1”,在末尾有类似的“U | 1234”

content = ([l.strip().decode('utf-8') for l in s1 if l.strip()])

for line in content:
    find_START = line.find('MP')   # check if line has D|1
    if find_START ==0:
       tmp += line
       res.append(tmp)
       tmp = ''
    else:
     tmp += line

for r in res:
    print(r)
其印刷如下:

MP|3561042|||WQTI544|BEA148|16011: BINGHAM, ID|45607|I|103306|||D|1
MP|3561042|||WQTI544|BEA148|16005: BANNOCK, ID|82839|I|103306|||D|1
MP|3561250|||WQTI576
|BEA135|48301: LOVING, TX|82|I|103308|||D|1MP|3561250|||WQTI576
|BEA135|48443: TERRELL, TX|984|I|103308|||D|1MP|3561250|||WQTI576
|BEA135|48173: GLASSCOCK, TX|1226|I|103308|||D|1MP|3561250|||WQTI576

日志文件

MP|3561042|||WQTI544|BEA148|16077: POWER     ID|7817|I|103306|||D|1
MP|3561042|||WQTI544|BEA148|16011: BINGHAM   ID|45607|I|103306|||D|1
MP|3561042|||WQTI544|BEA148|16005: BANNOCK   ID|82839|I|103306|||D|1
MP|3561250|||WQTI576        
|BEA135|48301: LOVING    TX|82|I|103308|||D|1
MP|3561250|||WQTI576        
|BEA135|48443: TERRELL   TX|984|I|103308|||D|1
MP|3561250|||WQTI576        
|BEA135|48173: GLASSCOCK     TX|1226|I|103308|||D|1
res = []             # empty list to store the results
tmp = ''             # empty string for unindented lines
with open(logFile) as f:
    content = f.readlines()

# you may also want to remove empty lines
content = [l.strip() for l in content if l.strip()]

for line in content:
    find_END = line.find('D|1')    # check if line has D|1
    if find_END > 0:
       tmp += line
       res.append(tmp)
       tmp = ''
    else:
     tmp += line

for r in res: print(r)
MP|3561042|||WQTI544|BEA148|16077: POWER     ID|7817|I|103306|||D|1
MP|3561042|||WQTI544|BEA148|16011: BINGHAM   ID|45607|I|103306|||D|1
MP|3561042|||WQTI544|BEA148|16005: BANNOCK   ID|82839|I|103306|||D|1
MP|3561250|||WQTI576|BEA135|48301: LOVING    TX|82|I|103308|||D|1
MP|3561250|||WQTI576|BEA135|48443: TERRELL   TX|984|I|103308|||D|1
MP|3561250|||WQTI576|BEA135|48173: GLASSCOCK     TX|1226|I|103308|||D|1
因此

MP|3561042|||WQTI544|BEA148|16077: POWER     ID|7817|I|103306|||D|1
MP|3561042|||WQTI544|BEA148|16011: BINGHAM   ID|45607|I|103306|||D|1
MP|3561042|||WQTI544|BEA148|16005: BANNOCK   ID|82839|I|103306|||D|1
MP|3561250|||WQTI576        
|BEA135|48301: LOVING    TX|82|I|103308|||D|1
MP|3561250|||WQTI576        
|BEA135|48443: TERRELL   TX|984|I|103308|||D|1
MP|3561250|||WQTI576        
|BEA135|48173: GLASSCOCK     TX|1226|I|103308|||D|1
res = []             # empty list to store the results
tmp = ''             # empty string for unindented lines
with open(logFile) as f:
    content = f.readlines()

# you may also want to remove empty lines
content = [l.strip() for l in content if l.strip()]

for line in content:
    find_END = line.find('D|1')    # check if line has D|1
    if find_END > 0:
       tmp += line
       res.append(tmp)
       tmp = ''
    else:
     tmp += line

for r in res: print(r)
MP|3561042|||WQTI544|BEA148|16077: POWER     ID|7817|I|103306|||D|1
MP|3561042|||WQTI544|BEA148|16011: BINGHAM   ID|45607|I|103306|||D|1
MP|3561042|||WQTI544|BEA148|16005: BANNOCK   ID|82839|I|103306|||D|1
MP|3561250|||WQTI576|BEA135|48301: LOVING    TX|82|I|103308|||D|1
MP|3561250|||WQTI576|BEA135|48443: TERRELL   TX|984|I|103308|||D|1
MP|3561250|||WQTI576|BEA135|48173: GLASSCOCK     TX|1226|I|103308|||D|1
输出

MP|3561042|||WQTI544|BEA148|16077: POWER     ID|7817|I|103306|||D|1
MP|3561042|||WQTI544|BEA148|16011: BINGHAM   ID|45607|I|103306|||D|1
MP|3561042|||WQTI544|BEA148|16005: BANNOCK   ID|82839|I|103306|||D|1
MP|3561250|||WQTI576        
|BEA135|48301: LOVING    TX|82|I|103308|||D|1
MP|3561250|||WQTI576        
|BEA135|48443: TERRELL   TX|984|I|103308|||D|1
MP|3561250|||WQTI576        
|BEA135|48173: GLASSCOCK     TX|1226|I|103308|||D|1
res = []             # empty list to store the results
tmp = ''             # empty string for unindented lines
with open(logFile) as f:
    content = f.readlines()

# you may also want to remove empty lines
content = [l.strip() for l in content if l.strip()]

for line in content:
    find_END = line.find('D|1')    # check if line has D|1
    if find_END > 0:
       tmp += line
       res.append(tmp)
       tmp = ''
    else:
     tmp += line

for r in res: print(r)
MP|3561042|||WQTI544|BEA148|16077: POWER     ID|7817|I|103306|||D|1
MP|3561042|||WQTI544|BEA148|16011: BINGHAM   ID|45607|I|103306|||D|1
MP|3561042|||WQTI544|BEA148|16005: BANNOCK   ID|82839|I|103306|||D|1
MP|3561250|||WQTI576|BEA135|48301: LOVING    TX|82|I|103308|||D|1
MP|3561250|||WQTI576|BEA135|48443: TERRELL   TX|984|I|103308|||D|1
MP|3561250|||WQTI576|BEA135|48173: GLASSCOCK     TX|1226|I|103308|||D|1

日志文件

MP|3561042|||WQTI544|BEA148|16077: POWER     ID|7817|I|103306|||D|1
MP|3561042|||WQTI544|BEA148|16011: BINGHAM   ID|45607|I|103306|||D|1
MP|3561042|||WQTI544|BEA148|16005: BANNOCK   ID|82839|I|103306|||D|1
MP|3561250|||WQTI576        
|BEA135|48301: LOVING    TX|82|I|103308|||D|1
MP|3561250|||WQTI576        
|BEA135|48443: TERRELL   TX|984|I|103308|||D|1
MP|3561250|||WQTI576        
|BEA135|48173: GLASSCOCK     TX|1226|I|103308|||D|1
res = []             # empty list to store the results
tmp = ''             # empty string for unindented lines
with open(logFile) as f:
    content = f.readlines()

# you may also want to remove empty lines
content = [l.strip() for l in content if l.strip()]

for line in content:
    find_END = line.find('D|1')    # check if line has D|1
    if find_END > 0:
       tmp += line
       res.append(tmp)
       tmp = ''
    else:
     tmp += line

for r in res: print(r)
MP|3561042|||WQTI544|BEA148|16077: POWER     ID|7817|I|103306|||D|1
MP|3561042|||WQTI544|BEA148|16011: BINGHAM   ID|45607|I|103306|||D|1
MP|3561042|||WQTI544|BEA148|16005: BANNOCK   ID|82839|I|103306|||D|1
MP|3561250|||WQTI576|BEA135|48301: LOVING    TX|82|I|103308|||D|1
MP|3561250|||WQTI576|BEA135|48443: TERRELL   TX|984|I|103308|||D|1
MP|3561250|||WQTI576|BEA135|48173: GLASSCOCK     TX|1226|I|103308|||D|1
因此

MP|3561042|||WQTI544|BEA148|16077: POWER     ID|7817|I|103306|||D|1
MP|3561042|||WQTI544|BEA148|16011: BINGHAM   ID|45607|I|103306|||D|1
MP|3561042|||WQTI544|BEA148|16005: BANNOCK   ID|82839|I|103306|||D|1
MP|3561250|||WQTI576        
|BEA135|48301: LOVING    TX|82|I|103308|||D|1
MP|3561250|||WQTI576        
|BEA135|48443: TERRELL   TX|984|I|103308|||D|1
MP|3561250|||WQTI576        
|BEA135|48173: GLASSCOCK     TX|1226|I|103308|||D|1
res = []             # empty list to store the results
tmp = ''             # empty string for unindented lines
with open(logFile) as f:
    content = f.readlines()

# you may also want to remove empty lines
content = [l.strip() for l in content if l.strip()]

for line in content:
    find_END = line.find('D|1')    # check if line has D|1
    if find_END > 0:
       tmp += line
       res.append(tmp)
       tmp = ''
    else:
     tmp += line

for r in res: print(r)
MP|3561042|||WQTI544|BEA148|16077: POWER     ID|7817|I|103306|||D|1
MP|3561042|||WQTI544|BEA148|16011: BINGHAM   ID|45607|I|103306|||D|1
MP|3561042|||WQTI544|BEA148|16005: BANNOCK   ID|82839|I|103306|||D|1
MP|3561250|||WQTI576|BEA135|48301: LOVING    TX|82|I|103308|||D|1
MP|3561250|||WQTI576|BEA135|48443: TERRELL   TX|984|I|103308|||D|1
MP|3561250|||WQTI576|BEA135|48173: GLASSCOCK     TX|1226|I|103308|||D|1
输出

MP|3561042|||WQTI544|BEA148|16077: POWER     ID|7817|I|103306|||D|1
MP|3561042|||WQTI544|BEA148|16011: BINGHAM   ID|45607|I|103306|||D|1
MP|3561042|||WQTI544|BEA148|16005: BANNOCK   ID|82839|I|103306|||D|1
MP|3561250|||WQTI576        
|BEA135|48301: LOVING    TX|82|I|103308|||D|1
MP|3561250|||WQTI576        
|BEA135|48443: TERRELL   TX|984|I|103308|||D|1
MP|3561250|||WQTI576        
|BEA135|48173: GLASSCOCK     TX|1226|I|103308|||D|1
res = []             # empty list to store the results
tmp = ''             # empty string for unindented lines
with open(logFile) as f:
    content = f.readlines()

# you may also want to remove empty lines
content = [l.strip() for l in content if l.strip()]

for line in content:
    find_END = line.find('D|1')    # check if line has D|1
    if find_END > 0:
       tmp += line
       res.append(tmp)
       tmp = ''
    else:
     tmp += line

for r in res: print(r)
MP|3561042|||WQTI544|BEA148|16077: POWER     ID|7817|I|103306|||D|1
MP|3561042|||WQTI544|BEA148|16011: BINGHAM   ID|45607|I|103306|||D|1
MP|3561042|||WQTI544|BEA148|16005: BANNOCK   ID|82839|I|103306|||D|1
MP|3561250|||WQTI576|BEA135|48301: LOVING    TX|82|I|103308|||D|1
MP|3561250|||WQTI576|BEA135|48443: TERRELL   TX|984|I|103308|||D|1
MP|3561250|||WQTI576|BEA135|48173: GLASSCOCK     TX|1226|I|103308|||D|1

每一行应该以
D|1
结尾,不是那么难吗?每一行应该以
D|1
结尾,不是那么难吗?@jezrael:同样的问题,当我试图使用replace函数时,它不起作用,你能告诉我我这里做错了什么吗?编辑于question@BharatGuda-最好的回答者,我不知道。@DirtyBit:你能告诉我为什么替换功能不可用吗working@BharatGuda你要用一个空str替换每个return和newline。这肯定行不通。因为你需要像我在asnwer中显示的那样连接这些行。@DirtyBit明白了!!泰@耶斯雷尔:同样的问题,当我尝试使用替换功能时,它不起作用,你能告诉我我在这里做错了什么吗?编辑于question@BharatGuda-最好的回答者,我不知道。@DirtyBit:你能告诉我为什么替换功能不可用吗working@BharatGuda你要用一个空str替换每个return和newline。这肯定行不通。因为你需要像我在asnwer中显示的那样连接这些行。@DirtyBit明白了!!泰!