首页 > 解决方案 > 将 readline() 与 Python 一起使用时,如何从列表中删除换行符或空字符串?

问题描述

我想知道如何从列表中删除换行符(或者如果使用 strip 方法,如何删除剩余的空字符串)。这是我到目前为止的代码:

pixel_start = 0
pixel_width = 25
pixel_height = 6
layer_dimension = pixel_width * pixel_height
pixel_end = layer_dimension
layers = []


def get_layer():
    return layer_list[pixel_start:pixel_end]


def increment_layer(pixel_start, pixel_end):
    pixel_start += layer_dimension
    pixel_end += layer_dimension
    return pixel_start, pixel_end


with open('pixel_layers.txt') as layer_file:
    layer_list = layer_file.readline().strip()

while len(layers) <= (len(layer_list) / layer_dimension):
    layers.append(get_layer())
    pixel_start, pixel_end = increment_layer(pixel_start, pixel_end)

layers = layers[:-1]

该文件仅包含一行 1500 个字符和一个换行符。其余代码将该列表分解为一个包含 100 个项目的列表,每个列表包含 150 个字符。然而,它实际上最终是 101 项,因为即使使用 strip 方法,它也会留下一个空字符串作为列表中的第 101 项。

我怎样才能避免这种情况?我不希望最终列表中出现换行符或空字符串。现在我有最后一行来删除它,但这很丑陋,而且根本不是正确的方式。

谢谢!

标签: pythonstringnewline

解决方案


我假设您想从列表“层”中删除额外的最后一个空元素。如果您从 while 循环中删除 '=' 符号,则可以解决此问题。

while len(layers) < (len(layer_list) / layer_dimension):
    layers.append(get_layer())
    pixel_start, pixel_end = increment_layer(pixel_start, pixel_end)

print(layers)

这是因为,当您运行 while 循环时,它会在计数器 = 10 时未找到任何字符时将一个空字符串附加到列表中。


推荐阅读