如何在Python中删除字符串前后的字符?

1 投票
2 回答
1282 浏览
提问于 2025-04-17 20:11

我该怎么去掉字符串中的空格和换行符呢?我试过:

a = []
for i in range(len(lines)):
     a.append(lines[i].rstrip().lstrip('\n'))

这里的lines是一个用readlines()函数创建的行列表。

2 个回答

2
a = [line.strip() for line in lines]

我觉得在把内容放入行列表之前,先去掉多余的空格和换行会更好。

5

str.strip() 是一个可以去掉字符串两边空格的函数,所以你想要的最简单方法就是直接用这个:

with open("source.txt") as file:
    a = [line.strip() for line in file]

你代码的问题在于,你把 str.lstrip()str.rstrip() 用错了。换句话说,换行符在右边,但你却试图从左边去掉它。str.rstrip() 会把右边的所有空格(包括换行符)去掉,而 str.lstrip("\n") 在左边找不到换行符,所以什么也不做,这就是你遇到的问题。

如果你想保留结尾的空格,但去掉换行符,那你应该用 line.rstrip("\n").lstrip(),也就是把你原来代码中左右去空格的顺序调换一下。这样就能确保除了换行符外,其他的空格都被去掉。

注意,我使用了 列表推导式 来实现这个功能,这样写起来既清晰又高效,是处理这种任务的好方法。

我还直接遍历文件对象,因为这样更高效(行不需要先加载到内存中)。另外,我使用了 with 语句 来打开文件,这在 Python 中是个好习惯,因为它可以避免一些细微的错误,而且代码也更易读。

撰写回答