Python Write Line有两个操作

时间:2014-08-13 09:07:29

标签: python text alter

我有这个工作代码:

S095    = 'S095' 
E095    = 'E095'

DocLan = 'c:\DocLan.asc'
tempDocLan = open( DocLan, 'r+' )

for line in fileinput.input( DocLan ):
    if fileinput.lineno() > 1:
        LanNr = find_nth(line, "S095", 1), " - ",
                line[find_nth(line, "S095", 1) + 5: find_nth(line, "S095", 1) + 14]
        if LanNr > 10:
            tempDocLan.write(line.replace(S095, E095))
        else:
            ""
    else:
        tempDocLan.write(line)

tempDocLan.close()

我试图更改代码以添加第二个写操作:

for line in fileinput.input(DocLan):
    if fileinput.lineno() > 1 :
        LanNr = find_nth(line, "S095", 1), " - ",
                line[find_nth(line, "S095", 1) + 5: find_nth(line, "S095", 1) + 14]

        if LanNr > 10:
            tempDocLan.write(line.replace(S095, E095))

            # error here
            tempDocLan.write(line[0:50])
        else:
            ""
    else:
        tempDocLan.write(line)

tempDocLan.close()

在第一次写入中,我替换了E095的文本S095 在第二次写中我想剪切文本(已经是E095),但它不起作用。


我正在使用Python 2.7。

我举一个例子。 我有一个包含此内容的文件。

删除,S095 / 20140001,

删除,S095 / 20140002,

删除,S095 / 20140003,

删除,S095 / 20140004,

删除,S095 / 20140005,

删除,S095 / 20140006,

我想创建这个文件。

E095 / 20140001,

E095 / 20140002,

E095 / 20140003,

E095 / 20140004,

E095 / 20140005,

E095 / 20140006,

感谢您的帮助。

Romeu Klug

1 个答案:

答案 0 :(得分:0)

这就是你想要做的一切,这很简单:

  • 按空格分割线条。
  • 用E替换S.
  • 写入。

已经完成了。

with open("input_file.txt") as input_file, open("output.txt", "w") as output:
    for line in input_file:
        _, tag = line.split()
        tag.replace("S", "E")

        output.write(tag)