用前一个替换一条线

时间:2018-03-20 13:26:06

标签: python

我的问题很简单,但我真的没有想法; 我的原始数据如下:

xxx,1593,7
\N
yyy,1094,4
ddd,1015,0,2
zzz,1576,5
\N
aaa,1037,6

我运行以下代码:

 list_data = data.split('\n')
    for line in  list_data:
        if len(line.split(',')) >= 3 :
            flag = True
            print( line.split(',')[1])
        else : 
            print(line)

我得到的输出:

1593
\N
1094
1015
1576
\N
1037

我需要更换每个' \ N'通过前一行的数量。所以我的输出应该如下:

1593
1593
1094
1015
1576
1576
1037

如果您有任何想法请帮忙。 谢谢!

3 个答案:

答案 0 :(得分:0)

我不确定你在这里尝试使用你的程序,但是在脚本中进行简单的编辑会得到你正在寻找的结果。

除了两行之外,我没有改变你的大部分代码。

list_data = data.split('\n')
for line in  list_data:
    if len(line.split(',')) >= 3 :
        flag = True
        print( line.split(',')[1])

        # I store the "normal" lines' year here, so if the next line is
        # not "normal" I print this prev

        prev = line.split(',')[1]    

    else: 

        # if len is less than 3, print the previous year
        print(prev)

会给你,

1593
1593
1094
1015
1576
1576
1037

答案 1 :(得分:0)

试试这样:

with open('yourfile.txt') as f:
    data = f.read().split('\n')
    num = ''
    for line in data:
        line = line.split(',')
        if len(line) > 1:
            print(line[1])
            num = line[1]
        else:
            print(num)

答案 2 :(得分:0)

您可以分离准备最终列表和打印/显示的逻辑。这将允许您使用一些列表推导方法。

#incoming data
data = "xxx,1593,7\n\N\nyyy,1094,4\nddd,1015,0,2\nzzz,1576,5\n\N\naaa,1037,6"

#function for processing
def getData(x):
    if len(x.split(',')) >= 3:
        return x.split(',')[1]
    else:
        return x

#create initial list from incoming data
List = [getData(x) for x in data.split("\n")]

#print and do replacements
for i, item in enumerate(List):
    if item == "\\N":
        print(List[i-1])
    else:
        print(item)

您可能还需要检查“\ N”作为第一个元素。