替换txt文件中的整行

6 投票
5 回答
18368 浏览
提问于 2025-04-15 20:54

我刚开始学习Python 3,真的需要一点帮助。我有一个txt文件,里面的内容是:

InstallPrompt=

DisplayLicense=

FinishMessage=

TargetName=D:\somewhere

FriendlyName=something

我有一个Python脚本,最后应该把其中的两行改成:

TargetName=D:\new

FriendlyName=Big

有人能帮我吗?我试着搜索过,但没找到可以用的东西。需要替换的文本长度可能会不一样。

5 个回答

2

你是在尝试解析一个配置文件(.ini)吗?这个格式看起来很像,只是没有头部部分。你可以使用configparser这个工具,虽然它可能会在“=”符号周围加一些空格(比如"TargetName=D:\new"和"TargetName = D:\new"的区别),但如果这些变化对你来说无所谓,使用configparser会简单得多,也不容易出错,比每次手动解析要好很多。

文本(ini)文件:

[section name]

FinishMessage=

TargetName=D:\something

FriendlyName=something

代码:

import sys
from configparser import SafeConfigParser

def main():
    cp = SafeConfigParser()
    cp.optionxform = str # Preserves case sensitivity
    cp.readfp(open(sys.argv[1], 'r'))
    section = 'section name'
    options = {'TargetName': r'D:\new',
               'FriendlyName': 'Big'}
    for option, value in options.items():
        cp.set(section, option, value)
    cp.write(open(sys.argv[1], 'w'))

if __name__ == '__main__':
    main()

文本(ini)文件(处理后):

[section name]

FinishMessage = 

TargetName = D:\new

FriendlyName = Big
5

在编程中,有时候我们需要处理一些数据,比如从一个地方获取数据,然后在程序里使用它。这就像是从冰箱里拿食材,然后用这些食材做饭一样。

有些时候,数据可能会有点复杂,或者我们需要把它转换成另一种格式才能使用。就像是把生菜切成小块,才能更好地放进沙拉里。

在这个过程中,我们可能会遇到一些问题,比如数据格式不对,或者程序无法找到我们需要的数据。这就像是你想做一个蛋糕,但发现没有鸡蛋了。

为了避免这些问题,我们可以提前检查一下数据,确保它们是正确的。就像在做饭之前,先把所有的食材准备好,确保没有遗漏。

总之,处理数据就像做饭一样,需要细心和准备,才能做出美味的菜肴。

import fileinput
for line in fileinput.FileInput("file",inplace=1):
    sline=line.strip().split("=")
    if sline[0].startswith("TargetName"):
        sline[1]="new.txt"
    elif sline[0].startswith("FriendlyName"):
        sline[1]="big"
    line='='.join(sline)    
    print(line)
2

这是一个非常简单的解决方案,适合你正在做的事情:

#!/usr/bin/python
import re
import sys
for line in open(sys.argv[1],'r').readlines():
  line = re.sub(r'TargetName=.+',r'TargetName=D:\\new', line)
  line = re.sub(r'FriendlyName=.+',r'FriendlyName=big', line)
  print line,

你可以在命令行中这样运行它:./test.py myfile.txt > output.txt

撰写回答