1

我正在将“文章”的内容写入文本文件。

源文件:

lol hi
lol hello
lol text
lol test

Python:

for line in all_lines:
    if line.startswith('lol '):
        mystring = line.replace('lol ', '').lower().rstrip()

article = 'this is my saved file\n' + mystring + '\nthe end'

这是保存到 txt 文件的内容:

this is my saved file
test
the end

这是我要保存到 txt 文件的内容:

this is the saved file
hi
hello
test
text
the end
4

3 回答 3

5

您每次都在替换字符串。您需要存储每一lol行​​的结果,然后将它们全部添加到mystring

mystring = []
for line in all_lines:
    if line.startswith('lol '):
        mystring.append(line.replace('lol ', '', 1).lower().rstrip() + '\n')

article = 'this is my saved file\n'+''.join(mystring)+'\nthe end'

在上面的代码中,我已经变成了列表,然后使用该方法mystring在最后变成了一个字符串。join请注意,我已\n在每一行中添加了一个换行符 ( ) 字符,因为您希望该字符出现在输出中(并rstrip()删除它)。或者,您可以编写:

line.replace('lol ', '', 1).lower().rstrip(' ')

它只允许rstrip()剥离空格而不是所有其他形式的空白。


编辑:另一种方法是编写:

mystring.append(line.replace('lol ', '').lower().rstrip())

和:

article = 'this is my saved file\n'+'\n'.join(mystring)+'\nthe end'
于 2012-07-13T15:12:12.963 回答
0

...或作为单线,

mystring = ''.join(line[4:].lower() for line in all_lines if line.startswith('lol '))
于 2012-07-13T15:16:26.110 回答
0

您可以采用这种不同的方法:

with open('test.txt') as fin, open('out.txt', 'w') as fout:
    fout.write('this is my saved file\n')
    for line in fin:
        if line.startswith('lol '):
            fout.write(line.replace('lol ', '').lower())
    fout.write('the end')
于 2012-07-13T15:16:36.773 回答