Python 将文本拉入 HTML 引号内的正则表达式
Python regular expression to pull text inside of HTML quotation marks
我正试图从 EDGAR 上公司的 10-K 文件中提取股票代码。股票代码通常出现在一对 HTML 引号之间,例如,“”或“”。相关文本的典型部分示例:
Our common stock has been listed on the New York Stock Exchange (“NYSE”) under the symbol “RXN”
在这一点上,我只是想弄清楚如何处理各种引号中的一个或多个的出现。我可以编写一个正则表达式来匹配一种特定类型的引号:
re.findall(r'under[^<]*the[^<]*symbol[^<]*“*[^<]*\n',fileText)
但是,我无法编写查找不止一种引号的正则表达式。此正则表达式不产生任何结果:
re.findall(r'under[^<]*the[^<]*symbol[^<]*“*‘*’*“*[^<]*\n',fileText)
如有任何帮助,我们将不胜感激。
您可以使用
re.sub("&#([0-9]+);", lambda x:chr(int(x.group(1))), text)
这是有效的,因为您可以使用 search/replace 为替换部分提供可调用。 “#”后面的数字是字符的unicode点,Python chr
函数可以将其转换为文本。
例如:
re.sub("&#([0-9]+);", lambda x:chr(int(x.group(1))),
"this is a “test“")
结果
'this is a “test“'
您的正则表达式查找 所有 一起出现的引号。如果您正在寻找任何 一个 的可能性,您需要在每个字符串周围加上括号,并且 or
它们:
(?:“)*|(?:‘)*|(?:’)*|(?:“)*
?:
使父组不捕获。即,解析器不会将每一个都保存为重要文本。顺便说一句,您可能希望使用组捕获来保存股票代码——您实际要查找的内容。 非常 快速而肮脏(和丑陋)的表达式,它将 return ['NYSE', 'RXN']
来自给定的字符串:
re.findall(r'(?:(?:“)|(?:[567];)|(?:̶[01];))(.+?)(?:(?:“)|(?:[567];)|(?:̶[01];))', fileText)
您可能只想在第一组中包含左引号,在最后一组中包含右引号。在两者中加上非此即彼的引号。
我正试图从 EDGAR 上公司的 10-K 文件中提取股票代码。股票代码通常出现在一对 HTML 引号之间,例如,“”或“”。相关文本的典型部分示例:
Our common stock has been listed on the New York Stock Exchange (“NYSE”) under the symbol “RXN”
在这一点上,我只是想弄清楚如何处理各种引号中的一个或多个的出现。我可以编写一个正则表达式来匹配一种特定类型的引号:
re.findall(r'under[^<]*the[^<]*symbol[^<]*“*[^<]*\n',fileText)
但是,我无法编写查找不止一种引号的正则表达式。此正则表达式不产生任何结果:
re.findall(r'under[^<]*the[^<]*symbol[^<]*“*‘*’*“*[^<]*\n',fileText)
如有任何帮助,我们将不胜感激。
您可以使用
re.sub("&#([0-9]+);", lambda x:chr(int(x.group(1))), text)
这是有效的,因为您可以使用 search/replace 为替换部分提供可调用。 “#”后面的数字是字符的unicode点,Python chr
函数可以将其转换为文本。
例如:
re.sub("&#([0-9]+);", lambda x:chr(int(x.group(1))),
"this is a “test“")
结果
'this is a “test“'
您的正则表达式查找 所有 一起出现的引号。如果您正在寻找任何 一个 的可能性,您需要在每个字符串周围加上括号,并且 or
它们:
(?:“)*|(?:‘)*|(?:’)*|(?:“)*
?:
使父组不捕获。即,解析器不会将每一个都保存为重要文本。顺便说一句,您可能希望使用组捕获来保存股票代码——您实际要查找的内容。 非常 快速而肮脏(和丑陋)的表达式,它将 return ['NYSE', 'RXN']
来自给定的字符串:
re.findall(r'(?:(?:“)|(?:[567];)|(?:̶[01];))(.+?)(?:(?:“)|(?:[567];)|(?:̶[01];))', fileText)
您可能只想在第一组中包含左引号,在最后一组中包含右引号。在两者中加上非此即彼的引号。