删除一些换行符,但不是全部用Python

时间:2019-04-01 10:48:16

标签: python list foreach newline

我有这种格式的数据

$ sudo dpkg-reconfigure apparmor

我可以使用

读入文件
Picture
'#Type'
'10', '10'
000000000000000
110000110110000
Picture2
'#Type2'
'10', '10'
000000000000000
110000111110000

,但是第4行和第5行将是列表中的两项。例如,列表将是

sourcefile.read().splitlines() 

但是我的目标是将[picture],[#type],[10,10],[000000000000000],[110000110110000],... [000000000000000](即第4行和第5行)连接起来并使其成为一项。最终结果将是

[110000110110000]

我该如何实现?更好的是,如何使它们在嵌套列表中成为一组4?非常感谢。

4 个答案:

答案 0 :(得分:2)

您可以尝试以下方法吗?

with open('data.txt', 'r') as infile:
    data = infile.read()
split_data = data.split('\n')
req_list = range(3, len(split_data), 5)
flag = False
for ind, val in enumerate(split_data):
    if flag:
        print([split_data[ind-1] + val])
        flag = False
        continue
    if ind not in req_list:
        print([val])
    else:
        flag = True

输出:

['Picture']
["'#Type'"]
["'10', '10'"]
['000000000000000110000110110000']
['Picture2']
["'#Type2'"]
["'10', '10'"]
['000000000000000110000111110000']

答案 1 :(得分:1)

完成后,您只需在数组上重复即可。

initialArray.forEachIndexed { index, value ->
    initialArray[index] = initialArray[index] + offset

    // or:
    initialArray[index] = value + offset
}

有了数组后,您可以提取长度超过9个字符的输入

arr = sourcefile.read().splitlines() 

然后从阵列中删除旧的并添加新的

arrOfLargeNumbers = filter(lambda x: len(x) > 9, arr)

答案 2 :(得分:0)

如果每张图片始终有4行,那么可以像现在一样拆分行-然后合并第3行和第4行以得到结果

答案 3 :(得分:0)

with open("path_to_your_input_file", "r") as f:
lines = [line.rstrip() for line in f.readlines()]
new_lines = []
last_was_digit = 0
for i, line in enumerate(lines):
    if line.isdigit() and last_was_digit == 0:
        new_lines.append(["".join([line, lines[i+1]])])
        last_was_digit = 1
    elif last_was_digit == 1:
        last_was_digit = 0
    else:
        new_lines.append([line])

因此,这段代码通过读取文件来完成这项工作。它不优雅,但可以。

输出:

> [['Picture'], ["'#Type'"], ["'10', '10'"], ['000000000000000110000110110000']
> ['Picture2'], ["'#Type2'"],["'10', '10'"], ['00000000000000011000011111000']]