如何覆盖python中特定行中的一组特定字符

2024-09-28 21:55:05 发布

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

因此,我正在尝试创建一个程序,它将自动编辑文件中的一组特定字符(它将读取并替换它们)。不能在文件中移动其他数据,否则可能会损坏,因此我需要将文本替换到与之前完全相同的位置。我环顾四周,没有发现什么有用的东西,但到目前为止,我的代码是:

l = 3
w = 0
with open("InidCrd000.crd") as myfile:
    hexWord = myfile.readlines()[l].split()[w]
    codeA = hexWord[58]
    codeB = hexWord[59]
    print("Current value: ", codeA, codeB)
    codeA = " "
    codeB = "Ð"
    print("New value: ", codeA, codeB)

编辑-我现在有了这个代码(credit-Ilayaraja),它可以工作,但它会将文件分成几行,并将随机数据放在不正确的位置(尽管输入的数据位置正确):

^{pr2}$

如果你想测试这个文件,这里是:1drv.ms/u/s!AqRsP9xMA0g1iqMl-ZQbXUqX2WY8aA(它是一个onedrive文件)


Tags: 文件数据代码文本程序编辑valuewith
2条回答

首先使用以下命令查找要更改的代码:

l = 3
w = 0
with open("InidCrd000.crd") as myfile:
    hexWord = myfile.readlines()[l].split()[w]
    codeA = hexWord[58]
    codeB = hexWord[59]
myfile.close()

然后这样改变:

^{pr2}$

使用以下参数定义函数:文件路径(filepath)、行号(lineno1到N)、行中字符的位置(position0到N)和要覆盖的新字符(newchar),如下所示:

def replace(filepath, lineno, position, newchar):
    with open(filepath, "r") as reader:
        lines = reader.readlines()
        l = lines[lineno-1]
        l = l[0:position] + newchar + l[position+1:]
        lines[lineno-1] = l
    with open(filepath, "w") as writer:
        writer.writelines(lines)

您可以按如下方式调用函数来替换字符:

^{pr2}$

相关问题 更多 >