Python rstrip()(对于制表符)没有按预期工作

时间:2013-08-02 14:11:59

标签: python string strip

我正在尝试使用rstrip()函数,但它没有按预期工作。 例如,如果我运行它:

lines = ['tra\tla\tla\t\t\t\n', 'tri\tli\tli\t\t\t\n', 'tro\tlo\tlo\t\t\t\n']

for line in lines:
    line.rstrip('\t')

print lines

返回

['tra\tla\tla\t\t\t\n', 'tri\tli\tli\t\t\t\n', 'tro\tlo\tlo\t\t\t\n']

而我希望它返回:

['tra\tla\tla\n', 'tri\tli\tli\n', 'tro\tlo\tlo\n']

这里有什么问题?

1 个答案:

答案 0 :(得分:4)

该函数返回 new ,剥离字符串,但您丢弃该返回值。

使用列表推导来代替整个lines列表;你也需要在最后忽略换行符; .rstrip()方法不会忽略适合您的方法。

lines = [line[:-1].rstrip('\t') + '\n' for line in lines]

演示:

>>> lines = ['tra\tla\tla\t\t\t\n', 'tri\tli\tli\t\t\t\n', 'tro\tlo\tlo\t\t\t\n']
>>> [line[:-1].rstrip('\t') + '\n' for line in lines]
['tra\tla\tla\n', 'tri\tli\tli\n', 'tro\tlo\tlo\n']