这段时间的一点思考

  这段时间是从参加集训培训营到现在。我变化很大, 因为我的生活似乎陷入了一重循环:收到打击-思考-获得感悟-收到新打击-又思考---

同时我变得很虚荣,很贪,美好的东西我都想得到,十分的肤浅并且喜欢幻想又细腻敏感。我也感觉到自己变得冷淡,对周围的人失去兴趣,好

像只想沉醉在自己的世界里。

  我知道这一切都是自己造成的,原因有几点:一是沉溺网游,喜欢玩游戏,游戏让我对生活人情味失去了嗅觉,也促长了我的自负。二是看

太多夸大事实的电影,这些电影往往塑造了一个颇具影响力和魅力的角色,使我羡慕而盲目地模仿。三是七情六欲、杂念过多,等等原因。这些

原因要追溯的话,可以在以前的生活中找到伏笔。高中只顾学习而忽略了其他方面的发展,导致心理发育不全面。

  道理都懂,可是为什么还是过不好?

  如果浮躁,多去经历打击,打击多了自然会明白生活其实没想象中的那么简单。找准自己的位置,每个人的轨迹注定与众不同,可是如果随

波逐流,其一生就会平庸安逸。

  现在,我决定做自己,放空思想,不要再进入死循环。这段时间我一直欺骗自己,以为看到的都能得到,以为人的潜力是无限的,用此类的

话来麻醉自己。现实却大相径庭,唯有脚踏实地,一分耕耘一分收获才是我们应该坚信的真理。

转载于:https://www.cnblogs.com/mycold/p/5912549.html

<think>题目要求:编写一个Python函数,去掉文本末尾的空行。思路:我们可以将文本按行分割,然后从最后一行开始向前检查,移除末尾的连续空行。步骤:1.将文本分割成行列表。2.从列表末尾开始向前遍历,移除所有末尾的空行(即空字符串或只包含空白字符的字符串),直到遇到非空行。3.将处理后的行列表重新组合成字符串。注意:我们只移除末尾的连续空行,文本中间的空行保留。例如:输入:"Hello\n\nWorld\n\n\n"输出:"Hello\n\nWorld"(注意,这里末尾的两个空行被移除,但中间的空行保留)但是,我们也要注意文本可能以换行符结尾,也可能没有。另外,我们考虑使用rstrip函数?但是rstrip会去掉所有末尾的空白(包括空格、制表符和换行),但题目要求只去掉末尾的空行(即换行符形成的空行),而且不能去掉非末尾的空白。不过,题目要求是去掉“末位处的空行”,所以我们只需要处理末尾的换行符形成的空行。因此,我们可以按行处理。另一种思路:我们可以用rstrip吗?但是rstrip会去掉所有末尾的空白字符(包括空格、换行等),如果我们只想去掉末尾的换行符(包括连续的多个换行符),而不影响其他空白字符(比如行尾可能有空格),那么按行处理更合适。因此,我们采用按行分割的方法。但是,注意:文本末尾可能没有换行符,也可能有多个。我们分割后,最后一行如果是空字符串,说明末尾有一个换行符;如果连续多个空字符串,说明多个换行。例如:文本:"line1\nline2\n"->分割:['line1','line2','']->去掉末尾的空字符串,得到['line1','line2'],再组合成"line1\nline2"。文本:"line1\nline2" ->分割:['line1','line2']->不需要去掉,组合为"line1\nline2"。文本:"line1\nline2\n\n" ->分割:['line1','line2','','']->去掉末尾两个空字符串,得到['line1','line2']->组合为"line1\nline2"但是,我们也要考虑文本中可能包含空格或制表符的行,这些行不是空行。题目要求是空行,所以我们只去掉完全为空的行(即长度为0的行)或者只包含空白字符的行?题目没有明确,但通常空行是指没有可见字符的行,即空白行(可能包含空格、制表符等空白字符,但我们通常也认为是空行?)。题目要求“空行”,我们可以有两种理解:1.严格空行:即该行除了换行符外没有任何字符(即长度为0)。2.包含空白字符的行:即该行只有空白字符(空格、制表符等)也被视为空行。题目没有明确,但通常我们会将只包含空白字符的行也视为空行。所以,我们可以去掉末尾的连续空白行(即只包含空白字符的行)。因此,我们需要判断每一行是否为空行(去除行内空白后是否为空)。步骤调整:1.将文本分割为行列表lines=text.splitlines(keepends=False)注意:splitlines()方法会按照行边界分割,并且默认会去掉行尾的换行符。但是,这样我们就丢失了每行末尾的换行符信息,所以重新组合时我们需要自己添加换行符。但是,我们也可以保留换行符:使用splitlines(True)?或者我们不使用splitlines,而是直接用split('\n'),这样我们可以在每行中保留换行符吗?实际上split('\n')不会保留换行符。另一种做法:我们可以用split('\n'),然后每行后面加上换行符,但最后一行可能没有换行符,所以这样处理比较复杂。更简单的方法:我们先用split('\n')得到行列表,然后处理末尾的空白行,最后用'\n'.join(lines)组合。这样,原始文本最后是否有换行符,我们无法保留?因为split('\n')会去掉换行符。例如:文本"hello\nworld\n" ->split('\n')-> ['hello','world',''],然后我们去掉最后的空字符串,得到['hello','world'],再用'\n'.join()得到"hello\nworld",最后没有换行符。而原始文本最后有一个换行符,我们希望去掉的是多余的空行,但原始文本最后只有一个换行符(即一个空行)时,我们希望去掉它吗?题目要求去掉末尾的空行,所以应该去掉。但是,如果原始文本最后没有换行符,我们就不应该添加换行符,所以用'\n'.join()组合后,最后不会有换行符。因此,我们的做法:lines= text.split('\n')然后从后往前遍历,去掉所有空白行(即去除行首尾空白后长度为0的行),直到遇到非空白行。然后,将这些行用'\n'连接起来。但是,这样会有一个问题:原始文本中可能包含空白字符的行(比如多个空格),我们也认为是空行,所以应该去掉。定义空白行:line.strip()== ''步骤:lines= text.split('\n')whilelines andlines[-1].strip()== '':lines.pop()result ='\n'.join(lines)但是,这样处理会改变原始文本中每行的内容吗?不会,因为我们只是去掉了末尾的空白行,其他行保持不变。但是,注意:split('\n')会将每一行的换行符都去掉,所以最后我们用'\n'.join(lines)重新组合时,每行之间用换行符连接,但最后一行后面不会添加换行符。这样,如果原始文本末尾有换行符,我们通过split('\n')得到的最后一个元素是空字符串(或空白字符串),然后我们将其去掉,所以最后就没有换行符了。但是,如果原始文本末尾没有换行符,那么split('\n')得到的最后一个元素是非空行(或者非空白行),我们就不会去掉它,所以最后组合的结果也没有换行符。这样符合要求:去掉末尾的空行(即末尾的空白行,包括多个),然后返回的文本末尾没有空行。但是,如果整个文本都是空行呢?那么我们会把所有行都去掉,返回空字符串。例如:输入"\n\n\n"-> split('\n') ->['','','',''] ->然后我们一直pop直到lines为空,然后join得到''。所以,这个函数可以这样写:但是,我们也要考虑另一种情况:文本中间有空白行,我们不去掉,只去掉末尾的连续空白行。这个函数满足要求。代码:</think>以下是一个Python函数,用于去除文本末尾的空行。该函数会保留文本中间的空行,只移除末尾的连续空行: ```python def remove_trailing_empty_lines(text: str) -> str: """ 移除文本末尾的连续空行 :param text: 原始文本 :return: 移除末尾空行后的文本 """ lines = text.split('\n') # 从后向前查找第一个非空行 while lines and not lines[-1].strip(): lines.pop() return '\n'.join(lines) ``` ### 代码解释: 1. **分割文本**:`text.split('\n')` 将文本按换行符拆分成行列表 2. **检测并移除末尾空行**: - `while lines and not lines[-1].strip()`:检查最后一行是否为空行(使用`strip()`移除空白字符后为空) - `lines.pop()`:移除最后一个空行元素 3. **重组文本**:`'\n'.join(lines)` 将处理后的行列表重新组合成字符串 ### 使用示例: ```python input_text = "First line\n\nSecond line\n\n\n" output_text = remove_trailing_empty_lines(input_text) print(repr(output_text)) # 输出:'First line\n\nSecond line' ``` ### 测试用例: ```python # 测试多种情况 test_cases = [ ("No trailing\nlines\n", "No trailing\nlines"), ("With spaces \n\t\n \t\n", "With spaces "), ("Middle\n\n\nLines\n\n\n", "Middle\n\n\nLines"), ("No newline", "No newline"), ("", ""), ("\n\n\nOnly empty lines\n\n\n", "\n\n\nOnly empty lines") ] for input_txt, expected in test_cases: result = remove_trailing_empty_lines(input_txt) assert result == expected, f"Failed: {input_txt!r} -> {result!r} (expected {expected!r})" print("All tests passed!") ``` ### 关键点: - 使用`strip()`判断空行,可处理包含空格/制表符的"空白行" - 只移除**末尾**连续空行,保留文本中间的空行 - 处理边界情况:全空文本、无换行文本、纯空白行文本等
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值