如何删除 Python 文件中所有行末尾的空格?
How do I remove whitespace at the end of all lines in a file in Python?
我有点新,无法配置 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
我猜这与我读写同一个文件有关?我试着研究这个,但所有的解决方案看起来都很冗长和复杂,我觉得这可能是一个非常简单、常见的任务。
所以我的问题是,这样做的好方法是什么?
如果您调用 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
这是一种方法,唱一个临时文件:
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)
读写同一个文件会比较复杂。
您不会获得太多(任何?)性能,因为无论如何您都需要写入数据。
仅删除文件中间的内容意味着重写文件的所有其余内容。
我有点新,无法配置 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
我猜这与我读写同一个文件有关?我试着研究这个,但所有的解决方案看起来都很冗长和复杂,我觉得这可能是一个非常简单、常见的任务。
所以我的问题是,这样做的好方法是什么?
如果您调用 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
这是一种方法,唱一个临时文件:
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)
读写同一个文件会比较复杂。 您不会获得太多(任何?)性能,因为无论如何您都需要写入数据。 仅删除文件中间的内容意味着重写文件的所有其余内容。