[英]Editing text file in python
我有一个文本文件,看起来像:
CREATE TABLE address(
location_pk integer NULL,
City varchar(50) NULL,
Address1 varchar(50) NULL,
Address2 varchar(50) NULL,
CREATE TABLE name(
idinteger NULL,
City varchar(50) NULL,
RootDCTKey integer NULL,
Class varchar(50) NULL,
CREATE TABLE location(
location_pk integer NULL,
City varchar(50) NULL,
Rootkey integer NULL,
我需要添加一个“);” 并删除逗号“,”在表的每个末尾之后看起来像这样:
CREATE TABLE address(
location_pk integer NULL,
City varchar(50) NULL,
Address1 varchar(50) NULL,
Address2 varchar(50) NULL );
CREATE TABLE name(
idinteger NULL,
City varchar(50) NULL,
RootDCTKey integer NULL,
Class varchar(50) NULL );
CREATE TABLE location(
location_pk integer NULL,
City varchar(50) NULL,
Rootkey integer NULL );
我的方法是将文件的更正版本写入另一个文件
opFile1 = open('txtfile.txt','rb').readlines()
finalfile = open('finaltxtfile.txt','wb')
for i,line in enumerate(opFile1):
if not line.startswith('CREATE TABLE'):
finalfile.write(line)
else:
#overwrite the last written line with the corrected line
finalfile.write(opFile1[i-2].rstrip(',')+' );')
#write the original 'CREATE TABLE' line
finalfile.write(line)
这种方法只是将更正的行添加到CREATE TABLE行之前,而不删除原始的错误行。 请帮助您的想法。 谢谢 :)
希望这可以帮助。 对于每一行,借助枚举索引,检查下一行是否以CREATE
开头(我将其设置为CREATE,您可以根据需要修改字符串)。 如果是,执行替换line.replace(',',');')
并编写该行。 我们还需要替换最后一行; 作为条件将其添加到if as or i+1==len(opFile1)
。 i+2<len(opFile1)
在那里,因此可以防止索引超出范围。
opFile1 = open('txtfile.txt','r').readlines()
finalfile = open('finaltxtfile.txt','w')
for i,line in enumerate(opFile1):
if i+2<len(opFile1) and opFile1[i+2].startswith('CREATE') or i+1==len(opFile1):
finalfile.write(line.replace(',',');'))
else:
finalfile.write(line)
finalfile.close()
顺便说一句,您使用的是二进制模式rb
, wb
来编写不必要的字符串,我将其更改为普通模式r
和w
。
如果文件不是很大,我就不会打扰每一行。 我只是将整个文件读入一个变量,在最后一个逗号处查找/替换,然后将该变量写入新文件(或原始文件)。
您可以使用re
来完成工作:
finalfile.write(re.sub(b'NULL,(\s*\n*)(CREATE|\Z)', rb'NULL);\1\2', opFile1))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.