替换txt文件中的整行
我刚开始学习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