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

时间:2013-03-25 00:24:40

标签: python

如何从字符串中删除换行符回车的空白和条带?我试过了:

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

lines是使用readlines()函数创建的行列表。

2 个答案:

答案 0 :(得分: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() - 交换原始代码中左右条带的参数。这样可以确保除了换行符之外没有其他空格,就像使用上面的代码一样。

请注意,我使用list comprehension来执行此操作 - 它更具可读性和效率,是执行此类任务的好方法。

我也直接在文件对象上循环,因为它更有效(不必将行加载到内存中)。请注意我使用the with statement打开文件 - 这是Python中的最佳实践,因为它可以保护您免受细微错误的影响,并且(再次)更具可读性

答案 1 :(得分:2)

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

我认为最好先把它放到行列表中去除