1

我是 Python 新手,我被困在这个文件a.txt中,我有一个包含 10-15 行 html 代码和文本的文件。我想将与我的正则表达式匹配的数据从 1 复制a.txtb.txt. 假设我有一行,我想复制双引号之间的数据,Hello "World" How "are" you即复制到新文件中。Worldare

这就是我所做的。

if x in line:
  p = re.compile("\"*\"")
  q = p.findall(line)
  print q

但这只是仅显示“”(双引号)作为输出。我认为我的正则表达式有错误。任何帮助是极大的赞赏。谢谢。

4

2 回答 2

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"
于 2013-05-16T16:58:09.737 回答
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)
于 2013-05-16T16:59:47.320 回答