如何在Python中删除字符串前后的字符?
我该怎么去掉字符串中的空格和换行符呢?我试过:
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 中是个好习惯,因为它可以避免一些细微的错误,而且代码也更易读。