数据附加问题

2024-09-27 21:32:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用python在现有字符串中添加单词组合。为了实现这一点,我写了下面的代码。你知道吗

import subprocess
from subprocess import Popen, PIPE

cat = subprocess.Popen(["hadoop", "fs", "-cat", "/user/cloudera/rank_t/*"], stdout=subprocess.PIPE)
dumpoff = Popen(["hadoop", "fs", "-put", "-", "/user/cloudera/DATA"],stdin=PIPE)
obrInd = "0"
line1 = ""
for line in cat.stdout:
    runnno= line.split('|')[0]
    code = line.split('|')[1]
    idval = line.split('|')[2]

    if (code == "OBR"):
        obrInd = runnno
    line =line + "|"+"OBR_"+obrInd  
    dumpoff.stdin.write(line)
    print(line)

我的样本数据:

1|ORC||4002C3|4002C3||||||20141231|||1962
2|OBR|1||4002C3|197 HP, RX 16/L|||20141|20141||||||||196248||RJ||3711028|||||F
3|OBX|1|ST|2263||NEGATIVE FOR INTRAEPITHELIAL L.||||||F|||20141231|RJ @#L
4|NTE|1|L|NEGATIVE FOR INTRAEPITHELIAL LESION AND .
5|OBX|2|ST|1158||NIL||||||F|||20141231|RJ@#L

预期输出:

1|ORC||4002C3|4002C3||||||20141231|||1962|
2|OBR|1||4002C3|197 HP, RX 16/L|||20141|20141||||||||196248||RJ||3711028|||||F|OBR_1
3|OBX|1|ST|2263||NEGATIVE FOR INTRAEPITHELIAL L.||||||F|||20141231|RJ @#L|OBR_1
4|NTE|1|L|NEGATIVE FOR INTRAEPITHELIAL LESION AND .|OBR_1
5|OBX|2|ST|1158||NIL||||||F|||20141231|RJ@#L|OBR_1

实际输出:

    1|ORC||4002C3|4002C3||||||20141231|||1962|
    2|OBR|1||4002C3|197 HP, RX 16/L|||20141|20141||||||||196248||RJ||3711028|||||F
    |OBR_1
    3|OBX|1|ST|2263||NEGATIVE FOR INTRAEPITHELIAL L.||||||F|||20141231|RJ @#L
    |OBR_1
    4|NTE|1|L|NEGATIVE FOR INTRAEPITHELIAL LESION AND .
    |OBR_1
    5|OBX|2|ST|1158||NIL||||||F|||20141231|RJ@#L
    |OBR_1

我试图追加的单词是在新行中追加的,我希望它在同一行中追加。我做错什么了?你知道吗


Tags: forlinecatsplitsubprocessstpopenpipe
1条回答
网友
1楼 · 发布于 2024-09-27 21:32:54

这是因为每个line的末尾都有一个\n。可以使用.strip()剥离字符串:

line = line.strip() + "|"+"OBR_"+obrInd  

或者

line = line.strip('\n') + "|"+"OBR_"+obrInd  

如果你关心行首/行尾的空格。你知道吗

相关问题 更多 >

    热门问题