我试图从文件中删除引号内的任何文字(以及引号本身)。
基本上我需要这个:
A A2A|"Dm"A2A "C"G2E|"Dm"D2D A,2D|
转变为:
A A2A|A2A G2E|D2D A,2D|
这是我最初尝试的代码片段:
def conversion():
with open(abc + .'txt') as infile, open(abc + '.tmp', 'w') as outfile:
for line in infile:
#Delete anything inside of quotes after the header
if '"' + '' in line:
line = line.replace('"' + '', '')
outfile.write(line)
#Write everything else
else:
outfile.write(line)
conversion()
这会删除引号,但会保留其中的所有内容。
如果我改变
line = line.replace('"' +'','')
要
line = line.replace('"' + "Dm" + '"', '')
我可以摆脱包含" Dm"的任何东西,理论上我可以为每个可能的组合编程,但这将是一个庞大的PITA,我想允许人为错误(例如有人写道&# 34; Dma"而不是" Dmaj")。
我也试过使用正则表达式,但老实说我不知道我用它做了什么。
def conversion():
with open(abc + '.txt') as infile, open(abc + '.tmp', 'w') as outfile:
for line in infile:
#Delete anything inside of quotes after the header
if '"' in line:
re.sub('".+"', '', line)
outfile.write(line)
#Write everything else
else:
outfile.write(line)
conversion()
这似乎什么也没做,我已经浏览了python文档,但没有例子说明如何在我尝试的上下文中使用它。
答案 0 :(得分:2)
re.sub()
返回已修改的行,不会就地编辑。
line = re.sub('".*?"', '', line)
outfile.write(line)
你的正则表达式会匹配引号,因此我对其进行了编辑以使其成为non-greedy。