替换txt文件中的浮点数

时间:2019-01-23 09:26:51

标签: python-3.x

首先,我想说我是Python的新手。

我将尽力解释我的问题。

该代码的主要目的是能够读取,修改和复制txt文件。

为此,我想将问题分为三个不同的步骤。

1-将前N行复制到新的txt文件(CopyFile)中,就像在原始文件(OrigFile)中一样

2-访问要更改其他数字的特定行。我想将此行添加到CopyFile。

3-将OrigFile的其余部分从第2点的行复制到文件的末尾。

目前,我已经可以使用下一个代码执行步骤1:

with open("OrigFile.txt") as myfile:
    head = [next(myfile) for x iin range(10)] #read first 10 lines of txt file

copy = open("CopyFile.txt", "w") #create a txt file named CopyFile.txt

copy.write("".join(head)) #convert list into str

copy.close #close txt file

第二步,我的想法是直接访问我感兴趣的txt行,并识别要更改的浮点数。代码:

line11 = linecache.getline("OrigFile.txt", 11) #opening and accessing directly to line 11

FltNmb = re.findall("\d+\.\d+", line11) #regular expressions to identify float numbers

考虑到需要在第11行中指定它,我的问题来了,当我需要将FltNmb换成新的时。我该如何实现?

1 个答案:

答案 0 :(得分:0)

打开两个文件,并在递增行计数器的同时顺序写入每一行。 第11行替换浮点数的条件。其余各行的内容未经修改:

with open("CopyFile.txt", "w") as newfile:
    with open("OrigFile.txt") as myfile:
        linecounter = 1
        for line in myfile:
            if linecounter == 11:
                newline = re.sub("^(\d+\.\d+)", "<new number>", line)
                linecounter += 1
                outfile.write(newline)
            else:
                newfile.write(line)
                linecounter += 1
相关问题