我是Python的新手,我坚持认为我有一个文件a.txt
,其中包含10-15行html代码和文本。我想将与我的正则表达式匹配的数据从一个a.txt
复制到b.txt
。假设我有一行Hello "World" How "are" you
,我想复制双引号之间的数据,即World
和are
,以便复制到新文件。
这就是我所做的。
if x in line:
p = re.compile("\"*\"")
q = p.findall(line)
print q
但这只是显示“”(双引号)作为输出。我认为我的正则表达式中存在错误。 任何帮助是极大的赞赏。 感谢。
答案 0 :(得分:2)
您的正则表达式(在没有所有字符串转义的情况下转换为"*"
)匹配零个或多个引号,后跟引号。
你想要
p = re.compile(r'"([^"]*)"')
<强>解释强>
" # Match a quote
( # Match and capture the following:
[^"]* # 0 or more characters except quotes
) # End of capturing group
" # Match a quote
这假定您永远不必处理转义报价,例如:克。
He said: "The board is 2\" by 4\" in size"
答案 1 :(得分:1)
捕获您感兴趣的组(即引号之间),从每一行中提取匹配项,然后将每行写入一个新文件,例如:
import re
with open('input') as fin, open('output', 'w') as fout:
for line in fin:
matches = re.findall('"(.*?)"', line)
fout.writelines(match + '\n' for match in matches)