我的问题很简单,但我真的没有想法; 我的原始数据如下:
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
如果您有任何想法请帮忙。 谢谢!
答案 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”作为第一个元素。