我有一个有趣的问题。我使用以下内容分割文件中的空白:
words = []
with open(fname, 'r') as f:
words = f.read().split()
之后,我将文件中的一些字符串替换为其他单词,并将所有内容存储到words
列表中。但是,既然我已经将所有内容都放入了一个列表中,我想将内容写回到同一个文件中,并且所有空白仍然存在。我还希望我替换的所有单词都在它们原来的单词所在的位置。如果有的话,这可能吗?如果是这样,有人能指出我正确的方向吗?谢谢!
您想要re.split
,并创建一个组来保留空格:
In [3]: re.split("(\s+)", "this is a test! Hello world.")
Out[3]: ['this', ' ', 'is', ' ', 'a', ' ', 'test!', ' ', 'Hello', ' ', 'world.']
请注意,如果您的文档包含换行符,这将保留换行符。
with open(fname, 'w'+) as fh:
fh.write(' '.join(words))
应该保留顺序,因为words
列表以相同的顺序维护它们。
编辑:以下创建表单的嵌套列表list[0] = ['Hello', 'there!']
,这意味着您必须更新更改您在问题中提到的字符串的代码。
with open(infile, 'r') as fh:
input = fh.read().split('\n')
lines = []
for line in input:
lines.append(line.split(' '))
要将其写回文件,类似以下内容就足够了:
with open(outfile, 'w+') as fh:
for line in lines:
fh.write(' '.join(line) + '\n')