从python中删除文本文件中的引号

时间:2012-06-23 03:53:32

标签: text python-3.x

我必须从相对较大的文本文件中删除引号。我已经查看了可能与此匹配的问题,但我仍然无法从文本文件中删除特定行的引号。

这是文件中的一个短片段:

1 - "C1".

E #1 - "C1".

2 - "C2".

1

2

E #2 - "C2".

我想1-"C1"。由c1替换,E #1 - "C1"替换为E c1。我尝试在python中替换这些,但是因为双"'s而得到错误。

我试过了:

input=open('file.text', 'r')
output=open(newfile.txt','w')
clean==input.read().replace("1 - "C1".","c1").replace("E #1 - "C1"."," E c1")
output.write(clean)

我有sed:

sed 's\"//g'<'newfile.txt'>'outfile.txt'.

但又是一个语法错误。

1 个答案:

答案 0 :(得分:0)

如果您确定需要 literal 替换,则只需要转义引号或使用单引号:replace('1 - "C1".', "c1")等等(并纠正一些语法错误)错别字)。但是,这只适用于第一行,因此读取整个文件没有意义。要做更聪明的工作,您可以使用re.sub

with open('file.text') as input, open('newfile.txt','w') as output:
     for line in input:
         line = re.sub(r'^(?P<num>\d+) - "C(?P=num)".$',
                       lambda m: 'c' + m.groups()[0], line)
         line = re.sub(r'^E #(?P<num>\d+) - "C(?P=num)".$',
                       lambda m: 'E c' + m.groups()[0], line)
         output.write(line)

sed命令中,您似乎只是尝试删除引号:

sed 's/"//g' newfile.txt > outfile.txt