grep文件的每一行,并递增值

2024-05-15 02:42:22 发布

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

我有一个文件,上面写着:

[tree]:1,"asdf"
[box]:2,"yuio"
[bee]:10,"rtyu"
[cup]:15,"bnmv"
[tree]:13,"asdf"

我希望输出是

^{pr2}$

所以我需要把[tree]的值增加1。我需要一些方法来搜索每行[tree],复制它旁边可能超过2位数的数字,然后递增这个数字。我已经在Matlab中完成了这项工作,但是速度非常慢,而且需要重写整个文件。我正在寻找一个更快的替代方案,比如bash脚本或者python中的一些东西。在


Tags: 文件方法boxtree数字速度cupbee
2条回答
def incrementKeys(infilepath, outfilepath, keys, incrementBy):
    with open(infilepath) as infile, open(outfilepath, 'w') as outfile:
        for line in infile:
            if any(line.startswith(key) for key in keys):
                k, tail = line.split(',')
                k, val = k.split(":")
                val = int(val)+incrementBy
                line = "%s:%d,%s\n" %(k, val, tail)
            outfile.write(line)

试试这个:

f = file("file.txt")
for l in f:
    if l[:6] == "[tree]":
        s = "".join([l[:l.find(":")+1], str(int(l[l.find(":")+1:l.find(",")])+1), l[l.find(","):]])
        print s

与其print,不如对结果做任何您喜欢的操作。例如,您可以再次将其写入文件。在

相关问题 更多 >

    热门问题