首页 > 解决方案 > 从 Python 字符串中删除前导 + 尾随空格和换行符,.strip() 不起作用?

问题描述

我目前正在上我的第二门 Python 课程,在我们的复习热身活动中,我被一个看似简单的问题难住了。这是它的陈述方式:

在本练习中,您的函数将接收 1 个参数,即文本文件的名称。该函数将返回通过将每行的第五个字符连接成一个字符串而创建的字符串。如果该行少于 5 个字符,则应跳过该行。在查找第五个字符之前,所有行都应删除前导和尾随空格。

CodeGrinder 然后根据随机生成的 .txt 文件对其进行评分。这是我目前拥有的代码:

def fifthchar(filename):
    file = open(filename)
    fifthstring = ''
    for x in file:
        x.strip('\n ')
        if len(x) >= 5:
            fifthstring += x[4]
        else:
            pass
    fifthstring.strip('\n ')
    return fifthstring

并返回错误:

AssertionError: False is not true : Fifthchar(rprlrhya.txt) 返回了 mylgcwdnbi

dmou。它应该返回 mylgcwdnbidmou。检查你的逻辑,然后再试一次。

似乎换行符正在通过 my 潜入,.strip()我不知道如何删除它们。我认为这.strip()会删除\n,并且我已经尝试了一切,从.rstrip()fifthstring.join(fifthstring.split())在循环中剥离 Fifthstring 和 x 时具有冗余。这些换行符是如何通过的?

标签: pythonstringremoving-whitespace

解决方案


这应该有效:

def fifthchar(filename):
    with open(filename) as fin :
        return ''.join( line.strip()[4] if len(line.strip()) > 4 else '' for line in fin.readlines() )

推荐阅读