我有一个来自txt文件的数据集,其中每行包含4个数据点,用空格分隔。由于收集数据时出现一些错误,一些行被分成两行,出现几个空格而不是实际数据。因此,输入应该如下所示:
data data data data
data data data data
data data data data
但实际上看起来像这样(第二行最后有三个空格,第三行以三个空格开头):
data data data data
data data
data
data data data data
我想为缺失的数据添加“n / a”,并在第二个示例中将第二行和第三行合并为一行。最后,我想将其保存为新文件。
这是我的尝试:
f1 = open("pilTest.txt","r")
f2 = open("pilFix.txt", "w")
stop = 0
for line in f1:
# Loop over each word in line
words = line.split(" ")
for i in range(len(words)):
if len(words[i])!=0:
f2.write(words[i])
f2.write(" ")
elif stop==0:
f2.write("n/a")
f2.write(" ")
stop = 1
建议?
我得到的是
data data data data
data data n/a
data
data data data data
所需的输出是
data data data data
data data n/a data
data data data data
答案 0 :(得分:1)
如果空间有重要意义,您可能需要分析这些空间。或者,假设数据丢失时出现错误,并且在虚线中间丢失错误,追溯填写缺失的数据可能有效:
f1 = open("pilTest.txt","r")
f2 = open("pilFix.txt", "w")
_last_words = []
_expected_length = 4
for line in f1:
words = line.split()
if len(words) != _expected_length:
if _last_words:
blanks = _expected_length - (len(_last_words) + len(words))
f2.write(' '.join(_last_words + ['n/a']*blanks + words) + '\n')
_last_words = []
else:
_last_words = words
else:
f2.write(line)
f2.close()