在python中编辑文本文件中的特定行

时间:2017-02-01 04:14:07

标签: python

我想在python中编辑文本文件中的一行。

我有一个文本文件

name:
address:
age:

我需要将内容添加到上述文件的某些特定文件中。基本上填补了一些领域。

例如: 输出应为

name:
address:xxx
age:20

2 个答案:

答案 0 :(得分:2)

我通常使用“ xreadlines()”来操纵文本文件(例如1GB文件)。 例如,如果我想将所有日期都移到行首,则下面的示例显示Python代码。

inputfile:inputfile.txt

  

$ Name1
  名称1 xx xx
  日期水类别
  19620701 100 a1
  19630801 200 b1
  19630901 150 c1
  $ Name2
  名称2 xx xx
  日期水类别
  19620701 200 a2
  19630801 100 b2
  19630901 300 c2
  ...

outFile:Outfile.txt。即使有了大量的txt文件,该程序也只需20秒即可完成运行。

  

名称1   名称1 xx xx日期
  水类别
  19620601 100 a1
  19630701 200 b1
  19630801 150 c1
  名称2
  名称2 xx xx
  日期水类别
  19620601 200 a2
  19630701 100 b2
  19630801 300 c2
  ...

Python代码:

inputFile=open('inputfile.txt','w')
OutFile=open('Outfile.txt'+,'w')
date0=date_init='19620601'
lines1=open(inputFile,'r').xreadlines()
for line in lines1:
    line_date=line[0:8] #Take the 1st 8 char,'19620701'
    if line_date.isdigit():
        OutFile.write(date0+line[8:])
        date0=line_date
    else:
        date0=date_init #Start from the first date
        OutFile.write(line)
open(inputFile,'r').close()
OutFile.close()

答案 1 :(得分:0)

我喜欢使用fileinput模块来编辑文件,如下所示:

import { OnInit } from "@angular/core";
import { BreadcrumbService } from '../../common/breadcrumb.service'; 
import { MenuModule, MenuItem } from 'primeng/primeng';

@Component({
  selector: 'my-product.component',
  templateUrl: './my-product.component.html',
})
export class MyProduct implements OnInit {
  breadcrumbItems: MenuItem[] = [];

  constructor(private breadcrumb: BreadcrumbService) {}

  ngOnInit() {
    this.breadcrumbItems.push({label:'Products'});
    this.breadcrumbItems.push({label:'Category-C', routerLink: ['/products/category-c']});
    this.breadcrumbItems.push({label: 'My-Product'});
    this.breadcrumb.setBreadcrumb(this.breadcrumbItems);
  }
}

只需将文件名作为参数传递给python命令,例如:

import fileinput
import sys

for line in fileinput.input(inplace=True):
    # Whatever is written to stdout or with print replaces
    # the current line
    if line.startswith("address:"):
        print("address:xxx")
    elif line.startswith("age:"):
        print("age:20")
    else:
        sys.stdout.write(line)