我必须从相对较大的文本文件中删除引号。我已经查看了可能与此匹配的问题,但我仍然无法从文本文件中删除特定行的引号。
这是文件中的一个短片段:
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'.
但又是一个语法错误。
答案 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