在文本文件的每一行末尾追加文本(单个字母)

2024-05-15 08:05:03 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是我正在使用的文本文件的示例:

437868313,2436413,Wyatt,Trenton,08/21/2003,211000010262002,211000010262002,2014,01,54435A000,510,Social Studies (Grade 5),08/14/2013,5-2,02,0,02,02,01,,,,,,100,05/29/2014,
437868313,2436413,Wyatt,Trenton,08/21/2003,211000010262002,211000010262002,2014,01,53235A000,500,Science (Grade 5),08/14/2013,5-2,02,0,02,02,01,,,,,,100,05/29/2014,
437868313,2436413,Wyatt,Trenton,08/21/2003,211000010262002,211000010262002,2014,01,58035A000,560,Physical Education (Grade 5),08/14/2013,5-2,02,0,02,02,01,,,,,,1,05/29/2014,

我只想在每一行的末尾加上字母“S”。上面一共有3条记录。2014年5月29日之后,我想插入S。因此每个记录看起来像:

437868313,2436413,Wyatt,Trenton,08/21/2003,211000010262002,211000010262002,2014,01,54435A000,510,Social Studies (Grade 5),08/14/2013,5-2,02,0,02,02,01,,,,,,100,05/29/2014,S

我意识到转换成CSV和使用excel会很简单,但是我在转换回txt时遇到了各种格式问题。想用python试试看。我正在尝试使用append,据我所知,write将覆盖我现有的文件:

myFile = open("myFile.txt", "a")
    for line in myFile:
        myFile.write('S')

我不经常使用python,我想知道如何对它进行索引,使它从第2行开始,并在逗号后面的最后一行追加,就像我在上面提到的那样。


Tags: txt示例记录socialmyfilewritesciencegrade
3条回答

打开一个文件进行读写,并枚举输入文件。使用mod 2确定偶数行。将s附加到偶数行并写入输出文件。

with open('myfile.txt', 'rb') as infile, with open('outfile.txt', 'wb') as outfile:
    for lineno, line in enumerate(infile):
        if lineno % 2 == 0:
            line = line + 'S'
        outfile.write(line)

OP希望每个记录都符合他的编辑,所以不需要测试偶数行。

import os

with open('myfile.txt', 'rb') as infile, with open('outfile.txt', 'wb') as outfile:
    for line in infile:
       line = line.replace(os.linesep, 'S' + os.linesep)
       outfile.write(line)

您需要逐行读取文件,然后逐行输出。这比使用CSV甚至是真正吓到我的电子表格处理软件要简单得多。

with open('input.txt', 'r') as istr:
    with open('output.txt', 'w') as ostr:
        for i, line in enumerate(istr):
            # Get rid of the trailing newline (if any).
            line = line.rstrip('\n')
            if i % 2 == 0:
                line += 'S'
            print(line, file=ostr)

如果仍在使用Python 2,请使用

ostr.write(line + '\n')

而不是print

更新:如果要将每个行(与其他行相反)追加到行,只需使用:

with open('input.txt', 'r') as istr:
    with open('output.txt', 'w') as ostr:
        for line in istr:
            line = line.rstrip('\n') + 'S'
            print(line, file=ostr)

试试这个:

filename = "file.txt"
file = open(filename, "r")
for line in file:
    print line.replace("\n","S\n")

相关问题 更多 >