如何删除Python中文件中所有行末尾的空格?

时间:2016-12-20 11:05:54

标签: python python-2.7 removing-whitespace

我有点新,无法配置rstrip命令以执行我想要的操作。

我对一个运行良好的文件进行了一些字符串操作,并且我已将结果写入新文件。这个新文件现在只需要从所有行的末尾删除尾随空格。

我的代码不起作用:

fo = open( FILENAME, 'r+' )
data_l = fo.read()
data = data_l.rstrip
fo.write(data)

这给了我一个错误:

    fo.write(data)
TypeError: expected a character buffer object

我猜这是和我一起读写同一个文件的?我试着调查一下,但所有的解决方案看起来都很复杂,我觉得这可能是一个非常简单的常见任务。

所以我的问题是,这样做的好方法是什么?

2 个答案:

答案 0 :(得分:1)

这是一种方法,唱一个临时文件:

import shutil
import tempfile


tmp = tempfile.mktemp()
with open(FILENAME) as fobj_in, open(tmp, 'w') as fobj_out:
    for line in fobj_in:
        fobj_out.write(line.rstrip() + '\n')
shutil.move(tmp, FILENAME)

读取和写入同一文件会更复杂。 你不会获得太多(任何?)性能,因为你无论如何都需要写入数据。 只删除文件中间的内容意味着重写所有其余的文件内容。

答案 1 :(得分:0)

如果你打电话给data = data.rstrip你已经松开了这个功能,而不是叫它:

鉴于

>>> data_l = 'hello           '

通知

>>> data_wrong = data_l.rstrip
>>> type(data_wrong)
<type 'builtin_function_or_method'>

>>> data_right = data_l.rstrip()
>>> data_right
'hello'

所以你可能想要

fo = open ( FILENAME, 'r+' )
data_l = fo.read()
data = data.rstrip()  #call the function
fo.write(data)        #I assume you meant this instead of data_l