Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中使用readline()时,如何从列表中删除换行符或空字符串?_Python_String_Newline - Fatal编程技术网

在Python中使用readline()时,如何从列表中删除换行符或空字符串?

在Python中使用readline()时,如何从列表中删除换行符或空字符串?,python,string,newline,Python,String,Newline,我想知道如何从列表中删除换行符(或者如果使用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_

我想知道如何从列表中删除换行符(或者如果使用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]
pixel\u start=0
像素宽度=25
像素高度=6
图层尺寸=像素宽度*像素高度
像素\u结束=图层\u尺寸
层=[]
def get_layer():
返回图层列表[像素开始:像素结束]
def增量层(像素开始、像素结束):
像素\u开始+=图层\u尺寸
像素\u结束+=图层\u尺寸
返回像素\u开始,像素\u结束
打开('pixel_layers.txt')作为层文件:
layer_list=layer_file.readline().strip()

而len(layers)我假设您希望从列表“layers”中删除额外的最后一个空元素。如果从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)
而len(层)<(len(层列表)/层维度):
layers.append(get_layer())
像素开始,像素结束=增量层(像素开始,像素结束)
打印(层)

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

要从字符串中删除尾随的换行符,您应该使用
layer\u file.readline().rstrip('\n')
。但是,如果您的文件很大,并且您知道其第一个
'\n'
字符的索引,则可以将其简化一点:

from itertools import repeat
from math import ceil

pixel_width = 25
pixel_height = 6
layer_dimension = pixel_width * pixel_height
layer_file_length = 1501
layers_max_size =  ceil(layer_file_length / layer_dimension)

with open('pixel_layers.txt', 'tr') as layer_file:
    layers = list(map(layer_file.read, repeat(layer_dimension, layers_max_size)))
    if last_chunk := layers.pop().rstrip('\n'):
        layers.append(last_chunk)

assert len(layers) == 10

你能提供输入的缩写版本(比如,300个左右的字符,所以只有前两项)吗?这样我们就可以自己进行实验了?这个问题对我来说并不明显。在您的示例中,
len(layer\u list)/layer\u维度
接近
10
,因此您的
len(layers)
不能超过10我不确定如何附加文件,但这里是前300个值:22100222212222020222021022220222222222222222222222222222222222222222022222212022220202222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222