1

我有一个有趣的问题。我使用以下内容分割文件中的空白:

words = []
with open(fname, 'r') as f:
  words = f.read().split()

之后,我将文件中的一些字符串替换为其他单词,并将所有内容存储到words列表中。但是,既然我已经将所有内容都放入了一个列表中,我想将内容写回到同一个文件中,并且所有空白仍然存在。我还希望我替换的所有单词都在它们原来的单词所在的位置。如果有的话,这可能吗?如果是这样,有人能指出我正确的方向吗?谢谢!

4

2 回答 2

1

您想要re.split,并创建一个组来保留空格:

In [3]: re.split("(\s+)", "this is a test! Hello world.")
Out[3]: ['this', ' ', 'is', ' ', 'a', ' ', 'test!', ' ', 'Hello', ' ', 'world.']

请注意,如果您的文档包含换行符,这将保留换行符。

于 2013-10-20T02:23:50.073 回答
0
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')
于 2013-10-20T02:25:27.683 回答